Экспорт из sqlite в csv с использованием сценария оболочки - PullRequest
82 голосов
/ 25 апреля 2011

Я делаю сценарий оболочки для экспорта запроса 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". Он работает, используя тот же метод с командной строкой, но я не знаю, почему сценарий оболочки не может экспортировать данные в файл.

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

Ответы [ 4 ]

155 голосов
/ 13 февраля 2014

Вместо точечных команд вы можете использовать параметры команды 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 для просмотра списка доступных опций.

121 голосов
/ 25 апреля 2011

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 можно игнорировать.

6 голосов
/ 22 февраля 2017

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

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

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

0 голосов
/ 05 августа 2017

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

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

Просто подключитесь к файлу базы данных sqlite в Firefox (SQlite manager -> подключить базу данных), а затем - Таблица -> Экспорт таблицы.Вам будет предоставлено еще несколько опций, которые вы можете просто щелкнуть и попробовать ....

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...