将na.strings传递给dbWriteTable

时间:2014-08-07 19:31:10

标签: database r sqlite sqldf rsqlite

我正在尝试在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 line 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 noob的人来说仍然非常困惑。 Runnin read.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?除了sqldfRSQLite之外,还有更好的方法可以将10 GB制表符分隔的文件读入R吗?我已经尝试过data.tableff

0 个答案:

没有答案