Подтвердить что ты не робот

Экспорт результатов запроса Mysql для Excel?

Мое требование состоит в том, чтобы сохранить все результаты запроса

SELECT * FROM document 
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)

в файл Excel.

4b9b3361

Ответ 1

Типичным способом достижения этого является экспорт в CSV, а затем загрузка CSV в Excel.
Вы можете использовать любой инструмент командной строки MySQL для этого, включив в оператор SELECT предложение INTO OUTFILE:

SELECT ... FROM ... WHERE ... 
INTO OUTFILE 'file.csv'
FIELDS TERMINATED BY ','

Подробнее см. эту ссылку.

В качестве альтернативы вы можете использовать mysqldump для хранения дампа в формате разделенного значения с помощью опции -tab, см. эту ссылку.

mysqldump -u<user> -p<password> -h<host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult

Ответ 2

Хороший пример может заключаться в том, когда вы можете записать его после окончания вашего запроса, если у вас есть соединения или где близко:

 select 'idPago','fecha','lead','idAlumno','idTipoPago','idGpo'
 union all
(select id_control_pagos, fecha, lead, id_alumno, id_concepto_pago, id_Gpo,id_Taller,
id_docente, Pagoimporte, NoFactura, FacturaImporte, Mensualidad_No, FormaPago,
Observaciones from control_pagos
into outfile 'c:\\data.csv' 
FIELDS TERMINATED BY ',' 
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n');

Ответ 3

Используйте следующий запрос:

 SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','  
 ENCLOSED BY '"' LINES TERMINATED BY '\n';

Ответ 4

В моем случае мне нужно вывести результат sql в файл на стороне клиента. Это наиболее типичный вариант использования для выгрузки данных из базы данных. Во многих ситуациях у вас нет доступа к серверу или вы не хотите записывать результаты на сервер.

mysql -h hostname -u username -ppwd -e "mysql simple sql statement that last for less than a line" DATABASE_NAME > outputfile_on_the.client

Проблема возникает, когда у вас сложный запрос, который длится несколько строк; Вы не можете использовать командную строку для простого вывода результата в файл. В таких случаях вы можете поместить ваш сложный запрос в файл, такой как longquery_file.sql, а затем выполнить команду.

mysql -h hn -u un -ppwd < longquery_file.sql DBNAME > output.txt

Это сработало для меня. Единственная сложность со мной - это символ табуляции; иногда я использую для group_cancat (foo SEPARATOR 0x09) будет записан как '\ t' в выходном файле. Символ 0x09 - ASCII TAB. Но эта проблема не связана с тем, как мы выводим результаты sql в файл. Это может быть связано с моим пейджером. Дайте мне знать, когда найдете ответ на эту проблему. Я буду обновлять этот пост.

Ответ 5

Это старый вопрос, но он по-прежнему один из первых результатов в Google. Самый быстрый способ сделать это - связать MySQL напрямую с Excel с помощью запросов ODBC или MySQL For Excel. Последнее было упомянуто в комментарии к OP, но я чувствовал, что он действительно заслуживает своего собственного ответа, потому что экспорт в CSV - не самый эффективный способ достичь этого.

ODBC Queries - это немного сложнее в настройке, но намного гибче. Например, надстройка MySQL для Excel не позволяет использовать WHERE в выражениях запросов. Гибкость этого метода также позволяет использовать данные более сложными способами.

MySQL для Excel - используйте эту надстройку, если вам не нужно делать что-либо сложное с запросом или если вам нужно что-то сделать быстро и легко. Вы можете создавать представления в своей базе данных, чтобы обойти некоторые ограничения запроса.

Ответ 6

Это работает для sqlite3 в командной строке.

sqlite3 ~/Documents/Databases/name.db
.output file.csv
.headers on
.mode csv
Select * from TaskResult where taskResult = 2429;