描述:我正在使用RStudio,我有一个名为databse.zip
的zip文件,这个文件是用密码加密的,我的目标是能够加载这个文件,解密它,提取其中的sqlite数据库(database.db
),并能够对它进行查询。
到目前为止,我尝试了以下方法:
# Load required packages
library(dotenv)
library(Hmisc)
library(RSQLite)
# Get password
password = Sys.getenv("PASSWORD")
# Load .zip file and decrypt it
test = getZip("databse.zip", password=password)
# Connect to the SQLite database
con = dbConnect(RSQLite::SQLite(), test) # ERROR! Error in path.expand(path) : invalid 'path' argument
# Get list of items from table in the database
my_data = dbGetQuery(con, "SELECT column_name FROM table") # I do not even reach this point
问题:基本上,我能够加载和解密文件,但我不知道如何连接到sqlite数据库并查询它。
问题:你能建议一个聪明优雅的方法来实现我的目标吗?如果需要,请随意使用不同的软件包。
1条答案
按热度按时间e5nqia271#
getZip()
用于流式传输单个文件格式zip存档的内容,而无需首先将其存储在磁盘上,它返回连接对象。这将适用于压缩的csv-s等平面文件,同时将其用于read.csv()
等。对于DBI / RSQLite,您(通常)需要在磁盘上有一个文件。由于R不能原生地处理密码保护的zip压缩文件,我们使用7z,尽管任何其他合适的命令行提取器也可以工作(例如,在Win的情况下,从rtools解压缩)。
这里我们首先创建一个有密码保护的zip arhive来创建一个可复制的示例,然后将其解压缩到R session tmp.目录中的
extracted/
并连接到解压缩后的SQLite数据库。创建于2023年1月10日,使用reprex v2.0.2