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

标签 r sqlite csv import

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

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

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

最佳答案

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

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

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


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

关于r - 如何将3000个CSV文件导入SQLite DB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29007961/

相关文章:

r - 自定义分组 dplyr 函数 (sample_n)

sqlite - java.lang.NullPointerException : Attempt to invoke virtual method on a null object reference to select sqlite 异常

csv - cloudera quick start 使用终端加载 csv 表 hdfs

csv - 如何创建具有多个 hdfs 文件的 Hive 表

java - BufferedReader 对其他函数不可见

r - R中可用的postgresql库有什么区别?

r - 如何在 excel 中复制或复制 "fill"值向上或向下一定行数

通过两个不同列中的两个条件删除 R 中的列

vb.net - 加快大量数据的搜索过程?

android - Android 中带有游标的表联合