SQLite: Jak zapisać wynik zapytania jako plik CSV?


Odpowiedzi:


249

Od tutaj i komentarz d5e5 za:

Będziesz musiał przełączyć wyjście na tryb csv i przełączyć się na plik wyjściowy.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

4
gdzie jest zapisywany ten plik?
RayLoveless

34
Jest drukowany na standardowe wyjście, czyli prawdopodobnie twój ekran. Aby zapisać wynik w pliku: sqlite> .output test.csv Aby przywrócić wyniki drukowania do ekranu: sqlite> .output stdout
d5e5

1
Wskaźniki, gdzie mogę dowiedzieć się, jak to zrobić w bibliotece Node?
kuanb

2
Użyj sqlite> .output C: /Users/jdoe/Documents/output.csv, jeśli chcesz użyć określonej ścieżki.
Dustin

Cześć! Ja to zrobiłem. Chociaż moje zapytanie zadziałało idealnie, plik wyjściowy jest pusty. Czy ktoś wie dlaczego?
Valeria Lobos Ossandón

144

Aby dołączyć nazwy kolumn do pliku csv, możesz wykonać następujące czynności:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

Aby zweryfikować zmiany, które wprowadziłeś, możesz uruchomić to polecenie:

sqlite> .show

Wynik:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 

3
Dzięki za pokazanie, jak uzyskać nazwy kolumn! Ta odpowiedź musi być wyższa.
Stan James,

Zwróć uwagę, że sqlite3 dołącza dane wyjściowe na końcu pliku bez usuwania poprzedniej zawartości.
kupgov

1
Ale każde .output filename.csvwykonanie tworzy lub usuwa plik.
kupgov

25

Dobre odpowiedzi z gdw2 i d5e5. Aby to trochę uprościć, oto zalecenia zebrane w jednej serii poleceń:

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

23

Oprócz powyższych odpowiedzi możesz również użyć .oncew podobny sposób .output. Spowoduje to wyświetlenie tylko następnego zapytania do określonego pliku, dzięki czemu nie musisz wykonywać .output stdout.

Więc w powyższym przykładzie

.mode csv
.headers on
.once test.csv
select * from tbl1;

1

Alternatywnie możesz to zrobić w jednej linii (testowane w win10)

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

Bonus: używanie PowerShell z poleceniami cmdlet i potokiem (|).

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

gdzie zapytanie.sql jest plikiem zawierającym zapytanie SQL

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.