2012-01-16 4 views
9
$ 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; как seperator для sqlite, но он не смог найти 4 столбца. Я экспортирую из sql в csv с проверкой «Поместить имена полей в первую строку». Могу ли я здесь что-то упустить?sqlite ошибка импорта csv через командную строку

первые 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. 
+2

Можете ли вы показать нам первые 5 строк файла CSV? – MatBailie

+0

@ Dems только что выложил первые 5 строк csv-файла – merrill

ответ

5

Нельзя импортировать в таблицу с первичным ключом, который необходимо импортировать в таблицу темпа.

Смотрите ответ на этот вопрос SO question

1

Может быть, есть разрыв строки в одном из ваших строк, не будучи должным образом спасся? Поэтому он думает, что вторая строка заканчивается после «tellus», а затем пытается разобрать текст, начиная с Magna, как 3-я строка, и не находит разделителей с запятой. Можете ли вы опубликовать скриншот того, что выглядит CSV при открытии в текстовой панели?

+0

, он выглядит точно так же, как я опубликовал :) – merrill

+0

точно моя точка. В примере, который вы опубликовали, вторая строка останавливается на слове «tellus», а третья строка начинается с «Magna». Ошибка подразумевает, что он способен синтаксически разбирать первые две строки просто (это поиск 3 "," s и, следовательно, 4 столбца) и ломается на третьем. Это означало бы, что разрыв строки между «tellus» и «Magna» - это не просто форматирование на stackoverflow.com, это разрыв строки, который находится в вашем текстовом файле. Вам нужно либо удалить строку или избежать ее. Дайте мне знать, если вам нужна помощь в выполнении любой из этих вещей. –

4

Поскольку ваш разделитель представляет собой только один символ, попробуйте использовать команду separator без кавычек вокруг точки с запятой. Итак:

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

Я получил тот же результат – merrill

Смежные вопросы