De SQLite-opdrachtregelinterface heeft een handig puntcommando genaamd .mode
, waarmee u de opmaak van zoekopdrachtresultaten kunt wijzigen.
Een van de waarden die u met deze opdracht kunt gebruiken is insert
. Als u deze waarde gebruikt, worden alle volgende queryresultaten opgemaakt als een SQL INSERT
verklaring.
SQLite-standaardinstellingen
Ten eerste, hier is hoe uw normale resultaten eruit kunnen zien (ervan uitgaande dat u de standaard SQLite-instellingen gebruikt).
SELECT * FROM Products;
Resultaat:
1|Widget Holder|139.5 2|Widget Opener|89.7 3|Widgets - 6 Pack|374.2 4|Blue Widget|63.0
Resultaten als INSERT-instructie
Hier leest u hoe u dit kunt wijzigen zodat de resultaten worden opgemaakt als een SQL INSERT
verklaring:
.mode insert Products2
Die verklaring specificeert Producten2 als de tabel waarin de gegevens worden ingevoegd. U moet de naam opgeven van de tabel waarin u de gegevens wilt invoegen.
Als ik nu de vorige SELECT
. uitvoer statement opnieuw, ze worden uitgevoerd als een INSERT
verklaring.
SELECT * FROM Products;
Resultaat:
INSERT INTO Products2 VALUES(1,'Widget Holder',139.49999999999999999); INSERT INTO Products2 VALUES(2,'Widget Opener',89.700000000000002838); INSERT INTO Products2 VALUES(3,'Widgets - 6 Pack',374.19999999999998862); INSERT INTO Products2 VALUES(4,'Blue Widget',63.000000000000000001);
Dit formaat opslaan
Wanneer u SQLite in een nieuw terminalvenster opent, verliest u deze instellingen. Met andere woorden, SQLite keert terug naar het standaard uitvoerformaat (dit is een door buizen gescheiden lijst).
U kunt echter uw eigen standaardinstellingen opgeven door de bovenstaande instellingen in een tekstbestand op te slaan.
Voer hiervoor het volgende in een tekstbestand in:
.mode insert NewTable
Sla dat bestand vervolgens op als .sqliterc
in uw/(de gebruiker) home directory.
Wanneer u nu verbinding maakt met SQLite in een nieuw terminalvenster, zal het die instellingen gebruiken in plaats van de standaard SQLite-instellingen.
In dit voorbeeld wordt NewTable als doeltabel gebruikt, maar u kunt gebruiken wat u maar wilt.
Het enige probleem hiermee is natuurlijk dat u de naam van de tabel moet wijzigen als deze verandert. En als je de moeite moet nemen om dat te doen, is het misschien makkelijker om het gewoon on-the-fly te veranderen met .mode insert NewTable
(in plaats van de tabelnaam te moeten zoeken/vervangen). Het is in ieder geval een optie als je het nodig hebt.