将CSV文件导入SQLite3,并指定列分隔符和行分隔符。

5
我将尝试使用sqlite3将csv文件加载到表中。(请注意,我非常新手sqlite3) 行中的值由逗号分隔,行由新行分隔。在我的想法中,在sqlite3 shell中使用以下命令应该能够正常工作:
$ sqlite3 features.db

.mode csv

CREATE TABLE csvdata ('A','B','C','D');

.headers off

.separator ROW "\n"
.separator COL ,

.import /home/DATA/testcsv csvdata

这会导致以下错误:

Error: multi-character column separators not allowed for import

也许这是因为我在使用"\n"作为行分隔符,但如果没有行分隔符,脚本将把每个逗号分隔的条目附加到一个长列表中。
非常感谢您的帮助!
1个回答

4

编辑:
将csv文件导入SQLite的默认条件是:
, 逗号作为列分隔符
\n 换行符作为行分隔符。
因此,即使您忽略这两个条件,您的代码也可以正常工作。

错误提示中提到了列分隔符。
尝试使用

.separator ","

这似乎在工作,虽然速度很慢,很难确定,因为脚本需要读入表格的许多行。我在第35524987行遇到了一个错误:插入失败:磁盘I/O错误。 - user8188120
通常,“磁盘 I/O 错误”意味着物理存储介质存在问题,而不是文件本身的问题。 - forpas
我不确定,因为在运行过程中出现了错误(进程没有在错误处停止)。如果有一种方法可以在插入表时实时打印行,那么我就能够检查,但如果这是磁盘存储问题,那么我无法解决。 - user8188120
我对磁盘错误问题有些困惑,因为我可以使用Python加载这些CSV文件,它们不会导致RAM过载。我认为只有在使用“.save name.db”时,数据库才会被提交到磁盘上,除非你可以在开始时指定db位置? - user8188120
如何将行分隔符从“\n”更改为“\r\n”? - lyl
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接