Eksport z sqlite do csv za pomocą skryptu powłoki

Robię skrypt powłoki, aby wyeksportować zapytanie SQLite do pliku csv, tak jak to:

 #!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db ".headers on"
./bin/sqlite3 ./sys/xserve_sqlite.db ".mode csv"
./bin/sqlite3 ./sys/xserve_sqlite.db ".output out.csv"
./bin/sqlite3 ./sys/xserve_sqlite.db "select * from eS1100_sensor_results;"
./bin/sqlite3 ./sys/xserve_sqlite.db ".exit"

Podczas wykonywania skryptu, wyjście pojawia się na ekranie, zamiast być zapisywane do " out.csv". Działa w ten sam sposób z wierszem poleceń, ale nie wiem dlaczego skrypt powłoki nie wyeksportuje danych do pliku.

Co robię źle?
Author: Jason Sundram, 2011-04-25

4 answers

Sqlite3

Masz osobne wywołanie do sqlite3 dla każdej linii; do czasu uruchomienia select, twoje .out out.csv zostało zapomniane.

Spróbuj:

#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!
Zamiast tego.

Metody sh/bash

Możesz wywołać skrypt przekierowaniem:

$ your_script >out.csv

Lub możesz wstawić następujący wiersz w swoim skrypcie:

exec >out.csv

Pierwsza metoda pozwala określić różne nazwy plików, podczas gdy druga wyświetla konkretną nazwę pliku. W obu przypadkach linia .output out.csv może być ignorowana.

 117
Author: tzot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-04 01:01:52

Zamiast poleceń dot, możesz użyć opcji poleceń sqlite3:

sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
To sprawia, że jest to jednoliniowy.

Możesz również uruchomić plik skryptu sql:

sqlite3 -header -csv my_db.db < my_script.sql > out.csv

Użyj sqlite3 -help, aby zobaczyć listę dostępnych opcji.

 144
Author: Hollister,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-12 22:38:14

Niedawno stworzyłem skrypt powłoki, który będzie mógł pobierać tabele z pliku db i konwertować je do plików csv.

Https://github.com/darrentu/convert-db-to-csv

Zapraszam do zadawania pytań na moim skrypcie:)

 6
Author: DarrenNEEDSHELP,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 21:56:19

Chociaż pytanie dotyczy skryptu powłoki, to myślę, że pomoże to kilku osobom, którym tylko przeszkadza przeniesienie danych z bazy danych sqlite3 do pliku csv.

Znalazłem bardzo wygodny sposób, aby to zrobić z przeglądarką firefox za pomocą rozszerzenia SQLite Manager.

Po prostu podłącz się do pliku bazy danych SQLite w Firefoksie (menedżer SQlite -> połącz bazę danych), a następnie Table -> Eksportuj tabelę. Otrzymasz więcej opcji, które możesz po prostu kliknąć i spróbuj....

Na końcu otrzymasz plik csv z wybraną tabelą do wyeksportowania.

 0
Author: infoclogged,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-05 19:12:50