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.