Я создаю оболочку script для экспорта 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"
При выполнении script вывод появляется на экране вместо сохранения в "out.csv". Он работает с тем же методом с командной строкой, но я не знаю, почему оболочка script не может экспортировать данные в файл.
Что я делаю неправильно?
У вас есть отдельный вызов sqlite3
для каждой строки; к моменту запуска select
ваш .out out.csv
был забыт.
Try:
#!/bin/bash
./bin/sqlite3 ./sys/xserve_sqlite.db <<!
.headers on
.mode csv
.output out.csv
select * from eS1100_sensor_results;
!
вместо.
Вы можете вызвать ваш script с перенаправлением:
$ your_script >out.csv
или вы можете вставить следующее в качестве первой строки в script:
exec >out.csv
Первый метод позволяет указать разные имена файлов, а последний - конкретное имя файла. В обоих случаях строка .output out.csv
может быть проигнорирована.
Вместо текстовых команд вы можете использовать параметры команды sqlite3:
sqlite3 -header -csv my_db.db "select * from my_table;" > out.csv
Это делает его однострочным.
Кроме того, вы можете запустить файл sql script:
sqlite3 -header -csv my_db.db < my_script.sql > out.csv
Используйте sqlite3 -help
, чтобы просмотреть список доступных параметров.
Недавно я создал оболочку script, которая сможет принимать таблицы из файла db и преобразовывать их в файлы csv.
https://github.com/darrentu/convert-db-to-csv
Не стесняйтесь задавать мне какие-либо вопросы по моему script:)
Хотя вопрос о shell script, я думаю, это поможет немногим из тех, кто просто беспокоится о передаче данных из базы данных sqlite3 в файл csv.
Я нашел очень удобный способ сделать это с помощью браузера Firefox, используя расширение SQLite Manager.
Просто подключитесь к файлу базы данных sqlite в firefox (SQlite manager → connect database), а затем Table → Export table. Вам будет предложено несколько дополнительных параметров, которые вы можете просто нажать и попробовать.
В конце вы получаете файл csv с таблицей u, которую вы выбрали для экспорта.