Sqlite3 kann das nicht direkt in SQL tun, außer über ein SELECT, und während SELECT eine "Zeile" von Ausdrücken zurückgeben kann, kenne ich keinen Weg, um eine falsche Spalte zurückzugeben.
Die Befehlszeilenschnittstelle kann dies jedoch tun:
.import FILE TABLE Import data from FILE into TABLE
.separator STRING Change separator used by output mode and .import
$ sqlite3 /tmp/test.db
SQLite version 3.5.9
Enter ".help" for instructions
sqlite> create table abc (a);
sqlite> .import /dev/tty abc
1
2
3
99
^D
sqlite> select * from abc;
1
2
3
99
sqlite>
Wenn Sie eine Schleife um ein INSERT legen, anstatt die CLI zu verwenden .import
Befehl zu verwenden, dann befolgen Sie unbedingt die Ratschläge in der sqlite-FAQ zur INSERT-Geschwindigkeit:
Standardmäßig ist jede INSERT-Anweisung eine eigene Transaktion. Aber wenn Sie mehrere INSERT-Anweisungen mit mit BEGIN...COMMIT umgeben, werden alle Einfügungen in einer einzigen Transaktion zusammengefasst. Die für das Commit benötigte Zeit der Transaktion wird über alle eingeschlossenen Insert-Anweisungen amortisiert und so wird die Zeit pro Einfügeanweisung stark reduziert.
Eine weitere Möglichkeit ist die Ausführung von PRAGMA synchron=OFF auszuführen. Dieser Befehl wird bewirkt, dass SQLite nicht auf Daten wartet, die Daten die Plattenoberfläche erreichen, was dazu führt Schreibvorgänge scheinbar viel viel schneller. Aber wenn Sie mitten in einer Transaktion den Strom einer Transaktion den Strom verlieren, kann Ihre Datenbankdatei möglicherweise beschädigt werden.
6 Stimmen
Auf Beilagen: stackoverflow.com/questions/1711631/
5 Stimmen
Ja, ab der Version 2012-03-20 (3.7.11) wird Ihre Syntax unterstützt.