我想导入一个csv文件,其结构与下面的示例类似:
var1;var2;var3
"a";1;"Some text"
"b";0;"More text"
"c;0;"Delimiter in ; middle of the text"
传统的解析器(如data.table::fread
使用的解析器)在默认情况下会处理这些数据,我想使用RSQLite::dbWriteTable
将这些数据导入SQLite数据库。
con <- DBI::dbConnect(RSQLite::SQLite(), dbname = "mydb.sqlite")
dbWriteTable(conn = con, name = "my_table", value = "data_file.csv")
dbWriteTable
中没有提供引号的选项,因此当发现有问题的行时,函数会抛出一个错误。我该如何导入这些数据?唯一的限制是,在导入SQLite之前,我没有足够的内存来使用R
解析数据。
1条答案
按热度按时间dgenwo3n1#
安装Windows和Linux平台上可用的csvfix实用程序,然后尝试此测试代码。它在Windows上对我有效。您可能需要为其他平台稍微调整一下,特别是
shell
行和eol=
参数,您可能不需要它们,也可能需要其他值。我们使用csvfix删除引号,并将字段中没有的分号替换为@,然后在阅读时使用@分隔符。首先,我们创建测试数据。
csv修复
现在使用csvfix处理数据文件
xsv
或者安装xsv(releases)rust实用程序。这在Windows上对我有效。