lar*_*y77 4 sqlite r sqldf dbplyr
我希望我要写的内容有意义。\n如果你看看
\n\n解释了如何查询 \xc3\xa0 la SQL(来自 R 的 csv 文件)。\n就我而言,我有大量数据存储为大型(或大于我的 RAM)平面文件。
\n例如,我想将其中一个存储为 SQLite 数据库,而不将其完全加载到内存中。\n想象一下,如果您可以自动读取该文件中适合您的 RAM 的有限块,将其存储到 SQL 中,然后释放一些内存,处理下一个块,依此类推,直到所有文件都在数据库中。\n这在 R 中可行吗?如果表格可以存储为 tibble,那就更好了,但这并不重要。\n任何建议表示赞赏。\n谢谢!
\n1) dbWriteTable dbWriteTable 可以将文件读入数据库,而无需通过 R。如果数据库尚不存在,则创建该数据库。
library(RSQLite)
cat("a,b\n1,2\n", file = "myfile.csv") # create test file
con <- dbConnect(SQLite(), "mydb")
dbWriteTable(con, "mytable", "myfile.csv")
dbGetQuery(con, "select count(*) from mytable") # ensure it is there
dbDisconnect(con)
Run Code Online (Sandbox Code Playgroud)
2) SQLite CLI我们也可以使用 sqlite cli 来完成此操作,它可以从 sqlite 下载站点下载。
https://www.sqlite.org/download.html
这根本不涉及 R 来创建数据库。如果 mydb 不存在,则会创建它。第一行是在 shell 或 cmd 提示符下输入的,它将提供自己的提示符,可以在其中输入其余的行。
sqlite3 mydb
.mode csv
.import myfile.csv mytable
.quit
Run Code Online (Sandbox Code Playgroud)
3) 其他数据库另一种选择是使用能够直接读取 csv 文件的数据库。H2 有csvread,MySQL 有load data infile,PostgreSQL 有copy。