SQLite: Как сохранить результат запроса в виде файла CSV?

159

Я новичок в SQLite. Есть ли способ экспортировать результаты запроса в файл CSV?

RayLoveless
источник
Экспорт из оболочки, одна
Антон Тарасенко

Ответы:

249

От сюда и комментарий d5e5 в:

Вам придется переключить вывод в режим csv и переключиться на вывод файла.

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
gdw2
источник
4
где этот файл сохраняется?
RayLoveless
34
Он выводится на стандартный вывод, т. Е. Ваш экран, вероятно. Чтобы сохранить вывод в файле: sqlite> .output test.csv Чтобы восстановить результаты печати на экране: sqlite> .output stdout
d5e5
1
Указатели на то, где я могу узнать, как это сделать в библиотеке Node?
kuanb
2
Используйте sqlite> .output C: /Users/jdoe/Documents/output.csv, если вы хотите использовать определенный путь.
Дастин
Здравствуй! Я сделал это. Хотя мой запрос работал отлично, выходной файл пуст. Кто-то знает почему?
Валерия Лобос Оссандон
144

Чтобы включить имена столбцов в ваш CSV-файл, вы можете сделать следующее:

sqlite> .headers on
sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout

Чтобы проверить внесенные вами изменения, вы можете запустить эту команду:

sqlite> .show

Вывод:

echo: off   
explain: off   
headers: on   
mode: csv   
nullvalue: ""  
output: stdout  
separator: "|"   
stats: off   
width: 22 18 
Саи Бхарат
источник
3
Спасибо за показ, как получить имена столбцов! Этот ответ должен быть выше.
Стэн Джеймс
Обратите внимание, что sqlite3 добавляет вывод в конец файла без удаления предыдущего содержимого.
Купгов
1
Но каждое .output filename.csvвыполнение создает или стирает файл.
Купгов
25

Хорошие ответы от gdw2 и d5e5. Чтобы сделать это немного проще, вот рекомендации, собранные в одну серию команд:

sqlite> .mode csv
sqlite> .output test.csv
sqlite> select * from tbl1;
sqlite> .output stdout
crsierra
источник
23

В дополнение к вышеупомянутым ответам вы также можете использовать .onceаналогичным образом .output. Это выводит только следующий запрос к указанному файлу, так что вам не нужно следовать .output stdout.

Так в приведенном выше примере

.mode csv
.headers on
.once test.csv
select * from tbl1;
Мат
источник
1

В качестве альтернативы вы можете сделать это в одну строку (протестировано в win10)

sqlite3 -help
sqlite3 -header -csv db.sqlite 'select * from tbl1;' > test.csv

Бонус: использование powershell с командлетом и pipe (|).

get-content query.sql | sqlite3 -header -csv db.sqlite > test.csv

где query.sql - файл, содержащий ваш SQL-запрос

Alexis
источник