通过命令行导入csv的sqlite错误
$ sqlite3 test.sql
SQLite version 3.6.12
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> create table test (id integer, author_id integer, title varchar(128), name text);
sqlite> .separator ";"
sqlite> .import sqlite.csv test
sqlite.csv line 3: expected 4 columns of data but found 1
sqlite> .separator ';'
sqlite> .import sqlite.csv test
sqlite.csv line 3: expected 4 columns of data but found 1
sqlite>
我想导入csv表;作为sqlite的分隔符,但它无法找到4列。我通过选中'将字段名称放在第一行'从sql导出到csv。我能在这里错过什么吗?通过命令行导入csv的sqlite错误
前5行CSV
id;"author_id";"title";"poem"
1;"92";"A Letter From Italy";"Salve magna parens frugum Saturnia tellus
Magna virm! tibi res antiqu laudis et artis
Aggredior sanctos ausus recludere fontes.
Virg. Geor. 2.
也许有你的字符串中的一个换行符是没有被正确逃脱?所以它认为第二行在“tellus”之后结束,然后试图解析从第三行开始的文本,并且没有找到分号分隔符。你可以发布一个在textpad中打开时看起来像CSV的屏幕截图吗?
它看起来完全像我张贴:) – merrill 2012-01-20 06:24:05
恰恰是我的观点。在您发布的样本中,第二行停在单词“tellus”,第三行以“Magna”开头。这个错误意味着它能够解析前2条线(它发现3“;”和因此4列)并且正在打破第三条。这意味着“tellus”和“Magna”之间的换行符不仅仅是在stackoverflow.com上进行格式化,它是您的文本文件中的换行符。您需要删除换行符或将其转义。让我知道你是否需要帮助做这些事情。 – 2012-01-21 00:51:49
由于您的分隔符只是单个字符,因此请尝试使用不带分号的分隔符命令。所以:
sqlite> .separator ;
sqlite> .import sqlite.csv test
我得到了同样的结果 – merrill 2012-01-20 07:20:13
您能不能告诉我们的前5行CSV文件的? – MatBailie 2012-01-16 10:33:42
@Dems刚刚发布了csv文件的前5行 – merrill 2012-01-17 01:14:06