Экспорт из sqlite в csv с помощью сценария оболочки



Я делаю сценарий оболочки для экспорта запроса sqlite в csv-файл, так же, как это:



 #!/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"


при выполнении скрипта, вывод обезьян на экране, вместо того, чтобы быть сохранены в " out.csv". Это работает тот же метод с командной строкой, но я не знаю, почему скрипт не удается экспортировать данные в файл.



что я делаю не так?

1186   4  

4 ответов:

sqlite3

у вас есть отдельный вызов sqlite3 для каждой строки; к тому времени ваш select работает, ваш .out out.csv была забыта.

попробуй:

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

SH / bash методы

вы можете либо вызвать свой скрипт с перенаправлением:

$ your_script >out.csv

или вы можете вставить первую строку в ваш скрипт:

exec >out.csv

первый метод позволяет указать различные имена файлов, в то время как последний выводит к определенному имени файла. В обоих случаях строка .output out.csv можно пренебречь.

вместо команд dot вы можете использовать параметры команды sqlite3:

sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv

- Это один-лайнер.

кроме того, вы можете запустить файл сценария sql:

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

использовать sqlite3 -help для просмотра списка доступных опций.

недавно я создал скрипт, который сможет взять таблицы из файла БД и конвертировать их в файлы CSV.

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

Не стесняйтесь задавать мне любые вопросы по моему сценарию :)

хотя вопрос касается сценария оболочки, я думаю, что это поможет немногим из тех, кто просто беспокоится о передаче данных из базы данных sqlite3 в csv-файл.

Я нашел очень удобный способ сделать это с браузером firefox, используя расширение SQLite Manager.

просто подключитесь к файлу базы данных sqlite в firefox ( SQLite manager -> connect database), а затем Table -> Export table. Вам будут поданы еще несколько вариантов, которые вы можете просто нажмите и попробуйте....

в конце вы получаете csv-файл с таблицей, которую вы выбрали для экспорта.

Comments

    Ничего не найдено.