0

我正在尝试在 R 中运行以下命令,以便将本地制表符分隔文件读取为 SQLite 数据库:

library(RSQLite)
banco <- dbConnect(drv    = "SQLite",
                   dbname = "data.sqlite")
dbWriteTable(conn       = banco,
             name       = "Tarefas",
             value      = "data.tsv",
             sep        = "\t",
             dec        = ",",
             na.strings = c("", NA),
             row.names  = FALSE,
             header     = TRUE)

但是,上面的语句会产生以下错误:

read.table 中的错误(fn,sep = sep,header = header,skip = skip,nrows = nrows,:由多个实际参数匹配的形式参数“na.strings”

这让我觉得我无法na.strings明确地作为read.delim参数传递。在没有这个参数的情况下运行dbWriteTable会给我“RS-DBI 驱动程序:(RS_sqlite_import: ./data.tsv 第 17696 行预期有 20 列数据,但找到了 18 列)”。这是可以理解的,因为我检查了第 17696 行,它几乎完全是空白的。

另一个测试运行使用sqldf也给了我一个错误:

> read.csv2.sql(file      = "data.tsv",
+               sql       = "CREATE TABLE Tarefas AS SELECT * FROM FILE LIMIT 5",
+               dbname    = "data.sqlite",
+               header    = TRUE,
+               row.names = FALSE)
Error in sqliteExecStatement(con, statement, bind.data) : 
  RS-DBI driver: (error in statement: no such table: FILE)

我认为这是一个不相关的错误,但对于像我这样绝对是 SQL 菜鸟的人来说仍然非常混乱。相反, Runninread.csv.sql给了我这个错误:

Error in read.table(fn, sep = sep, header = header, skip = skip, nrows = nrows, : more columns than column names

那么有没有办法通过na.strings = c("", NA)dbWriteTable?除了sqldf和之外,还有更好的方法将 10 GB 制表符分隔的文件读入 RRSQLite吗?我已经尝试过data.tableff

4

0 回答 0