Einfache SQL Lite Tabelle / Frage importieren

8

Ich habe eine einfache SQL-Frage. Ich möchte eine 3-Spalten-Datenbank erstellen und habe folgenden Code:

%Vor%

Wenn ich versuche, eine einfache CSV-Datei mit zwei Spalten zu importieren (prideID und pubmedID), erhalte ich den Fehler "3 Spalten mit Daten erwartet, aber 2 gefunden". Ich möchte, dass der Schlüssel t1 eine Ganzzahl ist, und automatisch hochzählen, wenn neue Felder hinzugefügt werden. Muss ich NOT NULL vor PRIMARY KEY setzen, damit dies funktioniert?

    
Bobby 15.07.2010, 23:20
quelle

3 Antworten

17

.import unterstützt die Umformung der Eingabe nicht (außer das Trennzeichen zu setzen). Sie müssen die CSV-Datei in eine temporäre Tabelle importieren und diese in die reale Tabelle einfügen. Hier ist eine Beispielsitzung:

%Vor%

Sie sehen, dass die ID hochgezählt wird. Dies liegt daran, dass eine Spalte mit dem Typ INTEGER PRIMARY KEY als Alias ​​für die interne ROWID behandelt wird - die immer eine eindeutige aufsteigende Zahl ist.

    
Nordic Mainframe 15.07.2010, 23:48
quelle
1

Anstelle von insert use

%Vor%

Es ist besser und schneller.

    
hakki 31.05.2014 18:27
quelle
0

Mit der .version von sqlite ( SQLite 3.7.15.2 2013-01-09 ) bin ich dabei, Sie müssen nicht zuerst in eine temporäre Tabelle importieren. Alles, was ich getan habe, war sicherzustellen, dass ich ein Trennzeichen gesetzt habe, bevor ich den Import starte. Ich habe die ID-Werte für jede Zeile angegeben, also war meine erste Spalte in der CSV eine Menge eindeutiger Ganzzahlen

    
Sai Ramachandran 18.07.2013 01:44
quelle

Tags und Links