使用sqldf的read.csv.sql读取90GB大CSV遇列数不匹配问题求助
解决read.csv.sql处理含逗号字符串的CSV文件问题
遇到这类列数不匹配的错误,核心是让read.csv.sql正确识别被引号包裹的含分隔符的单元格,具体操作如下:
明确指定
quote参数,匹配你CSV文件中用来包裹特殊字符串的引号类型:
如果你的CSV用双引号包裹含逗号的字符串,用这段代码:library(sqldf) read.csv.sql('/data/test.csv', sql = "select count(*) from file", quote = "\"" )如果是单引号包裹,就把
quote参数改为"'":library(sqldf) read.csv.sql('/data/test.csv', sql = "select count(*) from file", quote = "'" )若仍有问题,可以同时明确指定分隔符
sep = ",",确保程序正确识别列分隔:library(sqldf) read.csv.sql('/data/test.csv', sql = "select count(*) from file", sep = ",", quote = "\"" )
原理:默认情况下,sqlite的导入逻辑可能没有自动识别被引号包裹的含分隔符内容,通过quote参数告诉程序哪些字符是单元格的边界标记,这样即使单元格内有逗号,也会被当作完整的单元格内容处理,不会被误判为列分隔符。
内容的提问来源于stack exchange,提问作者ph_9933
相关产品推荐
相关产品推荐

