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 dane wyjściowe pojawiają się na ekranie, zamiast być zapisywane w pliku „out.csv”. Działa w ten sam sposób z wierszem poleceń, ale nie wiem, dlaczego skrypt powłoki nie eksportuje danych do pliku.
Co ja robię źle?
<<! ... !
jest dokładnie tym, czego potrzebowałem. Dzięki.Zamiast poleceń z kropką można użyć opcji polecenia sqlite3:
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
To sprawia, że jest to jedna linijka.
Możesz także uruchomić plik skryptu sql:
sqlite3 -header -csv my_db.db < my_script.sql > out.csv
Użyj,
sqlite3 -help
aby wyświetlić listę dostępnych opcji.źródło
Niedawno stworzyłem skrypt powłoki, który będzie w stanie pobrać tabele z pliku db i przekonwertować je na pliki csv.
https://github.com/darrentu/convert-db-to-csv
Zapraszam do zadawania pytań dotyczących mojego scenariusza :)
źródło
Chociaż pytanie dotyczy skryptu powłoki, myślę, że pomoże to niewielu z tych, którzy tylko przejmują się przeniesieniem danych z bazy danych sqlite3 do pliku csv.
Znalazłem bardzo wygodny sposób na zrobienie tego za pomocą przeglądarki Firefox z rozszerzeniem SQLite Manager.
Po prostu połącz się z plikiem bazy danych sqlite w przeglądarce Firefox (menedżer SQlite -> połącz bazę danych), a następnie Tabela -> Eksportuj tabelę. Otrzymasz więcej opcji, które możesz po prostu kliknąć i wypróbować ....
W końcu otrzymasz plik csv z tabelą, którą wybrałeś do wyeksportowania.
źródło
Using command line for Linux: user@dell-Admin: sqlite3 #activate your sqlite database first sqlite> .tables #search for tables if any available if already created one. sqlite> .schema #if you want to check the schema of the table. # once you find your table(s), then just do the following: sqlite> .headers on #export along with headers (column names) sqlite> .mode csv #file type is csv sqlite> .output example.csv #you want to provide file name to export sqlite> SELECT * from events; #If entire table is needed or select only required sqlite> .quit #finally quit the sqlite3
źródło