2012-01-16 15 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> 

Sto cercando di importare la tabella csv con; come separatore di sqlite ma non è stato in grado di trovare 4 colonne. Esportare da sql a csv con la casella 'Metti i nomi dei campi nella prima riga'. Potrei mancare qualcosa qui?errore sqlite che importa csv tramite la riga di comando

prime 5 righe del 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

Ci può mostrare le prime 5 righe del file CSV? – MatBailie

+0

@Dems ha appena pubblicato le prime 5 righe del file csv – merrill

risposta

5

Non è possibile eseguire l'importazione in una tabella con una chiave primaria da importare prima in una tabella temporanea.

vedere la risposta a questo SO question

1

Forse c'è un interruzione di linea in una delle corde che non viene adeguatamente sfuggito? Quindi pensa che la seconda riga termini dopo "tellus" e quindi cerchi di analizzare il testo iniziando con Magna come terza linea, e non trova nessun delimitatore di punto e virgola. Puoi pubblicare uno screenshot di come appare il CSV quando viene aperto nel textpad?

+0

sembra esattamente come ho postato :) – merrill

+0

esattamente il mio punto. Nell'esempio che hai postato, la seconda riga si ferma alla parola "tellus" e la terza riga inizia con "Magna". L'errore implica che è in grado di analizzare bene le prime 2 linee (trova 3 ";" se 4 colonne) e si sta spezzando sulla terza. Ciò implicherebbe che l'interruzione di riga tra "tellus" e "Magna" non è solo la formattazione su stackoverflow.com, è un'interruzione di riga nel file di testo. È necessario rimuovere il linebreak o sfuggirlo. Fammi sapere se hai bisogno di aiuto per fare una di quelle cose. –

4

Poiché il separatore è solo un singolo carattere, provare a utilizzare il comando separatore senza virgolette attorno al punto e virgola. Quindi:

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

ho ottenuto lo stesso risultato – merrill

Problemi correlati