Interfejs wiersza poleceń SQLite ma przydatne polecenie z kropką o nazwie .mode
, który umożliwia zmianę sposobu formatowania wyników zapytania.
Jedną z wartości, których możesz użyć z tym poleceniem, jest insert
. Użycie tej wartości spowoduje, że wszystkie kolejne wyniki zapytania zostaną sformatowane jako SQL INSERT
oświadczenie.
Domyślne ustawienia SQLite
Po pierwsze, oto jak mogą wyglądać Twoje normalne wyniki (zakładając, że używasz domyślnych ustawień SQLite).
SELECT * FROM Products;
Wynik:
1|Widget Holder|139.5 2|Widget Opener|89.7 3|Widgets - 6 Pack|374.2 4|Blue Widget|63.0
Wyniki jako INSERT Statement
Oto jak to zmienić, aby wyniki były sformatowane jako SQL INSERT
oświadczenie:
.mode insert Products2
To stwierdzenie określa Produkty2 jako tabelę, do której zostaną wstawione dane. Musisz podać nazwę tabeli, do której chcesz wstawić dane.
Teraz, kiedy uruchamiam poprzedni SELECT
ponownie, są one wyprowadzane jako INSERT
oświadczenie.
SELECT * FROM Products;
Wynik:
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);
Zapisz ten format
Gdy otworzysz SQLite w nowym oknie terminala, utracisz te ustawienia. Innymi słowy, SQLite powróci do swojego domyślnego formatu wyjściowego (który jest listą oddzieloną pionami).
Możesz jednak określić własne ustawienia domyślne, zapisując powyższe ustawienia w pliku tekstowym.
Aby to zrobić, wprowadź do pliku tekstowego:
.mode insert NewTable
Następnie zapisz ten plik jako .sqliterc
w twoim/(użytkownika) katalogu domowym.
Teraz, gdy połączysz się z SQLite w nowym oknie terminala, użyje on tych ustawień zamiast domyślnych ustawień SQLite.
Ten przykład używa NewTable jako tabeli docelowej, ale możesz użyć tego, co chcesz.
Oczywiście jedyny problem z wykonaniem tego polega na tym, że będziesz musiał zmienić nazwę tabeli, jeśli się zmieni. A jeśli musisz zadać sobie trud, łatwiej będzie po prostu zmienić to w locie za pomocą .mode insert NewTable
(zamiast szukania/podmieniania nazwy tabeli). W każdym razie jest to opcja, jeśli jej potrzebujesz.