sqlite错误通过命令行导入csv

时间:2012-01-16 10:28:31

标签: sql sqlite csv import

$ 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的前5行

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.  

3 个答案:

答案 0 :(得分:5)

由于您的分隔符只是一个字符,请尝试使用分隔符命令,而不使用分号周围的引号。所以:

sqlite> .separator ;
sqlite> .import sqlite.csv test

答案 1 :(得分:5)

您无法导入具有主键的表,您必须先将其导入临时表。

查看此SO question

的答案

答案 2 :(得分:1)

也许你的一个字符串中的换行没有被正确转义?所以它认为第二行在“tellus”之后结束,然后尝试解析从Magna开始作为第3行的文本,并且没有找到分号分隔符。您是否可以发布在Textpad中打开时CSV的外观截图?