Ich versuche, eine CSV-Datei in eine SQLite-Tabelle zu importieren.
Beispiel csv:
1,2
5,6
2,7
Beispielbefehl:
sqlite> create table foo(a, b);
sqlite> .separator ,
sqlite> .import test.csv foo
Error: test.csv line 1: expected 2 columns of data but found 4
Ich bin mir nicht mal sicher, warum es vier Spalten mit sechs Daten und zwei Spalten finden würde.
6 - 2 = 4
\r\n
unter Windows,\n
unter * nix (einschließlich neuerer Macs),\r
unter älteren Macs.Antworten:
Was auch in den Kommentaren gesagt wird, SQLite sieht Ihre Eingabe als 1, 25, 62, 7. Ich hatte auch ein Problem mit und in meinem Fall wurde es gelöst, indem "Trennzeichen" in ".mode csv" geändert wurde. Sie könnten also versuchen:
Der erste Befehl erstellt die Spaltennamen für die Tabelle. Wenn Sie jedoch möchten, dass die Spaltennamen von der CSV-Datei geerbt werden, können Sie die erste Zeile einfach ignorieren.
quelle
create table
Befehl weglassen, und SQLite verwendet die Spaltennamen aus der CSV-Datei.Year,Make,Model,Description,Price
und nicht die tatsächlichen Daten enthält. Wenn dies bei Ihrer CSV-Datei der Fall ist, müssen Sie die Tabelle nicht manuell mit demcreate table
Befehl erstellen . Der.import
Befehl verwendet die erste Zeile in Ihrer Datei, um die Spaltennamen zu ermitteln und die Tabelle entsprechend zu erstellen. Sie müssen noch den Namen der Tabelle in den Befehl aufnehmen. Die gleichen Informationen aus den SQLite-Dokumenten ..mode
? Ist das nicht nur für die Ausgabe?type
für einen CSV-Spaltennamen.So habe ich es gemacht.
Geben Sie die SQLite-Shell der Datenbank ein, zu der die Daten hinzugefügt werden müssen
sqlite> .separator "\t" ---IMPORTANT! should be in double quotes sqlite> .import afile.csv tablename-to-import-to
quelle
.separator "\t" "\r"
Ich füge hier Informationen aus früheren Antworten mit meiner eigenen Erfahrung zusammen. Am einfachsten ist es, die durch Kommas getrennten Tabellenüberschriften direkt zu Ihrer CSV-Datei hinzuzufügen, gefolgt von einer neuen Zeile und dann allen Ihren CSV-Daten.
Wenn Sie nie wieder SQLite-Inhalte ausführen (wie ich), ersparen Sie sich möglicherweise ein oder zwei Websuchen:
Geben Sie in die Sqlite-Shell Folgendes ein:
Wenn Sie Sqlite nicht auf Ihrem Mac installiert haben, führen Sie es aus
Möglicherweise müssen Sie eine Websuche durchführen, um Homebrew zu installieren.
quelle
unescaped " character
ich mit Warnungen um?Geben Sie vor dem Befehl .import ".mode csv" ein.
quelle
So importieren Sie eine CSV-Datei in sqlite3
Datenbank erstellen
Stellen Sie den Modus und den Tabellennamen ein
Importieren Sie die CSV-Dateidaten in sqlite3
Tabellen finden
Finden Sie Ihr Tabellenschema
Finden Sie Tabellendaten
Zählen Sie die Anzahl der Zeilen in der Tabelle
quelle
Mit Termsql können Sie dies in einer Zeile tun:
termsql -i mycsvfile.CSV -d ',' -c 'a,b' -t 'foo' -o mynewdatabase.db
quelle
Ich hatte genau das gleiche Problem (unter OS X Maverics 10.9.1 mit SQLite3 3.7.13, aber ich glaube nicht, dass SQLite mit der Ursache zusammenhängt). Ich habe versucht, CSV-Daten zu importieren, die aus MS Excel 2011 gespeichert wurden. wird
';'
als Spaltentrennzeichen verwendet. Ich fand heraus, dass die CSV-Datei aus Excel immer noch 9-mal Zeilenumbruchzeichen unter Mac OS verwendet. Durch Ändern in Newix-Zeilenumbruch wurde das Problem behoben. AFAIR BBEdit hat hierfür einen Befehl sowie Sublime Text 2.quelle
tr -s '\r' '\n'
und das funktioniert mit allen Arten von zufälligen Dateien.Folge den Schritten:-
quelle
Wie einige Websites und andere Artikel spezifizieren, sehen Sie sich diese einfach an. https://www.sqlitetutorial.net/sqlite-import-csv/
Wir müssen das Trennzeichen für die
csv
Datei nicht angeben , da csv durch Komma getrennt bedeutet.sqlite> .separator ,
Keine Notwendigkeit für diese Linie.Das wird einwandfrei funktionieren :)
PS: Meine Städte.csv mit Header.
quelle
.save someFileName
am Ende zu rennen . Ich habe eine Stunde gebraucht, um dies zu finden, um es schließlich in die Speicherdatenbankdatei auf die Festplatte zu exportieren 😅