Frage

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

sqlite3 meshdb.db "create table t1 (t1key INTEGER PRIMARY KEY, prideID, pubmedID);"

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

War es hilfreich?

Lösung

.import unterstützt nicht das Umrennen des Eingangs (außer beim Einstellen des Separators).Sie müssen die CSV-Datei in eine temporäre Tabelle und den Einsatz in den echten Tisch importieren.Hier ist eine beispielhafte Sitzung:

generasacodicetagpre.

Sie sehen, dass die ID aufgerechnet wird.Dies liegt daran, dass eine Spalte mit Typ Integer Primärschlüssel als Alias für den internen RowiD behandelt wird - was immer eine einzigartige, aufsteigende Zahl ist.

Andere Tipps

Anstatt insert verwenden

create table newtable as select  * from  footmp;

Es ist besser und schneller.

mit der .version von sqlite ( sqlite 3.7.15.2 2013-01-09 ) Ich muss nicht zuerst in einen temporären Tisch importieren.Alles, was ich tat, war, sicherzustellen, dass ich einen Separator setze, bevor ich den Import startete.Ich habe die ID-Werte für jede Zeile angegeben, sodass meine erste Spalte in der CSV ein Satz von einzigartigen Ganzzahlen war

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top