如何将 3000 个 CSV 文件导入 SQLite 数据库?

How to import 3000 CSV files into SQLite DB?

我有大约 3000 个 CSV 文件,每个文件有 200 个条目。因此,总共有 600,000 个条目。

我想将所有这些文件导入 SQLite DB(我在 Firefox 中使用 SQLite Manager)。

执行此操作的最佳方法是什么?稍后我需要将 SQLite tables 读入 R 代码,因此在将文件导入数据库时​​我应该考虑到它。例如,将所有文件导入同一个 table 是个好主意吗?或者,将每个文件导入单独的 table 是否更好(在这种情况下如何自动执行此过程)?

可能最简单的方法是将所有内容都放在一个 table 中,但这取决于您以后的需求。

全部在不同的 table 中使用文件名(不带扩展名)作为 table 名称:

library(RSQLite)
con <- dbConnect(SQLite(), "mydb.sqlite")

for(filename in list.files()) {
  tmp <- read.table(filename, [...])
  dbWriteTable(con, name = strsplit(filename,"\.")[[1]][1], value = tmp)
}

合二为一table(使用 RSQLite):

library(RSQLite)
con <- dbConnect(SQLite(), "mydb.sqlite")

for(filename in list.files()) {
  tmp <- read.table(filename, [...])
  dbWriteTable(con, name = "mytable", value = tmp, append = TRUE)
}

合二为一table(使用 sqldf):

library(sqldf)

for(filename in list.files()) {
  tmp <- read.table(filename, [...])
  sqldf("INSERT INTO mytable SELECT * FROM tmp;", dbname = "mydb.sqlite", drv = "SQLite")
}

旁注:一个可能比 Firefox 插件更方便的工具是 http://sqlitebrowser.org/——这是一个偏好问题,但值得一试!多平台也是如此。