Mon exigence est de stocker tous les résultats de la requête
SELECT * FROM document
WHERE documentid IN (SELECT * FROM TaskResult WHERE taskResult = 2429)
dans un fichier Excel.
Pour ce faire, le moyen typique consiste à exporter au format CSV, puis à charger le fichier CSV dans Excel.
Pour cela, vous pouvez utiliser n’importe quel outil de ligne de commande MySQL en incluant la clause INTO OUTFILE
dans votre instruction SELECT
:
SELECT ... FROM ... WHERE ...
INTO OUTFILE 'file.csv'
FIELDS TERMINATED BY ','
Voir ce lien pour des options détaillées.
Alternativement, vous pouvez utiliser mysqldump pour stocker dump dans un format de valeur séparé en utilisant l’option --tab, voir ce lien.
mysqldump -u<user> -p<password> -h<Host> --where=jtaskResult=2429 --tab=<file.csv> <database> TaskResult
Le bon exemple peut être lorsque vous écrivez après la fin de votre requête si vous avez des jointures ou si vous fermez:
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');
Utilisez la requête ci-dessous:
SELECT * FROM document INTO OUTFILE 'c:/order-1.csv' FIELDS TERMINATED BY ','
ENCLOSED BY '"' LINES TERMINATED BY '\n';
Dans mon cas, je dois vider le résultat SQL dans un fichier côté client. C'est la situation la plus typique. Vous n'avez pas accès au serveur ou vous ne voulez pas écrire votre résultat sur le serveur. Le problème est que vous avez une requête compliquée qui dure plusieurs lignes; vous ne pouvez pas utiliser la ligne de commande pour transférer facilement le résultat dans un fichier.
mysql -h hostname -d databasename -u username -ppwd -e "mysql simple sql statement that last for less than a line" > outputfile_on_the.client
vous pouvez mettre votre requête compliquée dans un fichier: longquery_file.sql exécuter la commande
mysql -h hn -d dn -u un -ppwd < longquery_file.sql > output.txt
Cela a fonctionné pour moi. La seule difficulté avec moi est le caractère de tabulation que j'utilise parfois pour group_cancat (foo SEPARATOR 0x09) sera écrit comme '\ T' dans le fichier de sortie. Le caractère 0x09 est ASCII TAB. Mais ce problème n’est pas particulier à la façon dont nous exportons les résultats SQL dans un fichier. Cela peut être lié à mon téléavertisseur. Faites-moi savoir quand vous trouverez une réponse à ce problème. Je vais mettre à jour ce post.
C'est une vieille question, mais c'est toujours l'un des premiers résultats sur Google. Pour ce faire, le moyen le plus rapide consiste à lier directement MySQL à Excel à l’aide de requêtes ODBC ou de MySQL For Excel. Ce dernier a été mentionné dans un commentaire au PO, mais j’ai estimé qu’il méritait vraiment sa propre réponse, car exporter au format CSV n’est pas le moyen le plus efficace d’y parvenir.
ODBC Requêtes - C'est un peu plus compliqué à installer, mais c'est beaucoup plus flexible. Par exemple, le complément MySQL For Excel ne vous permet pas d'utiliser des clauses WHERE
dans les expressions de requête. La flexibilité de cette méthode vous permet également d’utiliser les données de manière plus complexe.
MySQL For Excel - Utilisez ce complément si vous n'avez aucune tâche complexe à effectuer avec la requête ou si vous souhaitez que quelque chose soit accompli rapidement et facilement. Vous pouvez créer des vues dans votre base de données pour contourner certaines des limitations de la requête.