sql >> Database teknologi >  >> RDS >> SQLite

Output SQLite-forespørgselsresultater som en INSERT-sætning

SQLite-kommandolinjegrænsefladen har en praktisk punktkommando kaldet .mode , som giver dig mulighed for at ændre den måde, forespørgselsresultater formateres på.

En af værdierne du kan bruge med denne kommando er insert . Brug af denne værdi resulterer i, at alle efterfølgende forespørgselsresultater formateres som en SQL INSERT erklæring.

SQLite-standardindstillinger

For det første, her er, hvordan dine normale resultater kan se ud (forudsat at du bruger standardindstillingerne for SQLite).

SELECT * FROM Products;

Resultat:

1|Widget Holder|139.5
2|Widget Opener|89.7
3|Widgets - 6 Pack|374.2
4|Blue Widget|63.0

Resultater som INSERT-erklæring

Her er, hvordan du ændrer det, så resultaterne formateres som en SQL INSERT erklæring:

.mode insert Products2

Denne erklæring specificerer Produkter2 som den tabel, som dataene vil blive indsat i. Du skal angive navnet på den tabel, som du vil indsætte dataene i.

Nu når jeg kører den forrige SELECT sætning igen, de udlæses som en INSERT erklæring.

SELECT * FROM Products;

Resultat:

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);

Gem dette format

Når du åbner SQLite i et nyt terminalvindue, mister du disse indstillinger. Med andre ord vil SQLite vende tilbage til sit standardoutputformat (som er en rørsepareret liste).

Du kan dog faktisk angive dine egne standardindstillinger ved at gemme ovenstående indstillinger i en tekstfil.

For at gøre dette skal du indtaste følgende i en tekstfil:

.mode insert NewTable

Gem derefter filen som .sqliterc i din/(brugerens) hjemmemappe.

Når du nu opretter forbindelse til SQLite i et nyt terminalvindue, vil det bruge disse indstillinger i stedet for standardindstillingerne for SQLite.

Dette eksempel bruger NewTable som måltabellen, men du kan bruge, hvad du vil.

Det eneste problem med at gøre dette er naturligvis, at du bliver nødt til at ændre navnet på tabellen, hvis den ændres. Og hvis du har brug for at gå ind i besværet med at gøre det, kan det være nemmere blot at ændre det på farten med .mode insert NewTable (i stedet for at skulle finde/erstatte tabelnavnet). Under alle omstændigheder er det en mulighed, hvis du har brug for det.


  1. Enum i Hibernate, fortsætter som en enum

  2. Forbindelse til SQL Server virker nogle gange

  3. Hvordan fjerner man alle MySQL-tabeller fra kommandolinjen uden DROP-databasetilladelser?

  4. Introduktion til ER-datamodellen