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


Ответы:


249

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

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

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

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

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-запрос

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.