Мое требование состоит в том, чтобы сохранить все результаты запроса
SELECT * FROM document
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
в файл Excel.
Мое требование состоит в том, чтобы сохранить все результаты запроса
SELECT * FROM document
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
в файл Excel.
Типичным способом достижения этого является экспорт в 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
Хороший пример может заключаться в том, когда вы можете записать его после окончания вашего запроса, если у вас есть соединения или где близко:
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');
Используйте следующий запрос:
SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';
В моем случае мне нужно вывести результат 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 в файл. Это может быть связано с моим пейджером. Дайте мне знать, когда найдете ответ на эту проблему. Я буду обновлять этот пост.
Это старый вопрос, но он по-прежнему один из первых результатов в Google. Самый быстрый способ сделать это - связать MySQL напрямую с Excel с помощью запросов ODBC или MySQL For Excel. Последнее было упомянуто в комментарии к OP, но я чувствовал, что он действительно заслуживает своего собственного ответа, потому что экспорт в CSV - не самый эффективный способ достичь этого.
ODBC Queries - это немного сложнее в настройке, но намного гибче. Например, надстройка MySQL для Excel не позволяет использовать WHERE
в выражениях запросов. Гибкость этого метода также позволяет использовать данные более сложными способами.
MySQL для Excel - используйте эту надстройку, если вам не нужно делать что-либо сложное с запросом или если вам нужно что-то сделать быстро и легко. Вы можете создавать представления в своей базе данных, чтобы обойти некоторые ограничения запроса.
Это работает для sqlite3 в командной строке.
sqlite3 ~/Documents/Databases/name.db
.output file.csv
.headers on
.mode csv
Select * from TaskResult where taskResult = 2429;