如何将3000个CSV文件导入SQLite DB?

时间:2015-03-12 11:00:45

标签: r sqlite csv import

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

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

这样做的最佳方法是什么?稍后我将需要将SQLite表读入R代码,因此在将文件导入DB时应将其考虑在内。例如,将所有文件导入同一个表是否是个好主意?或者,最好将每个文件导入一个单独的表(在这种情况下如何自动执行此过程)?

1 个答案:

答案 0 :(得分:3)

将所有内容放入单个表格中可能最容易,但这取决于您的需求。

所有使用文件名(不带扩展名)的不同表作为表名:

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)
}

所有在一个表中(使用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)
}

所有在一个表中(使用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/更方便的工具 - 这是一个偏好的问题,但它值得一试!多平台也是如此。