如何将 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/——这是一个偏好问题,但值得一试!多平台也是如此。
我有大约 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/——这是一个偏好问题,但值得一试!多平台也是如此。