Comment enregistrer la sortie d'une requête MySQL sur une feuille MS Excel?
Même s'il est uniquement possible de stocker les données dans un fichier .txt
, tout ira bien.
De enregistrer les résultats de la requête MySQL dans un fichier texte ou CSV :
MySQL fournit un mécanisme simple pour écrire les résultats d'une instruction select dans un fichier texte sur le serveur. En utilisant les options étendues de la nomenclature INTO OUTFILE, il est possible de créer une valeur CSV (virgule séparée) pouvant être importée dans un tableur tel que OpenOffice ou Excel ou toute autre application acceptant des données au format CSV.
Étant donné une requête telle que
SELECT order_id,product_name,qty FROM orders
qui renvoie trois colonnes de données, les résultats peuvent être placés dans le fichier /tmp/orders.txt à l’aide de la requête:
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.txt'
Cela créera un fichier séparé par des tabulations, chaque ligne sur sa propre ligne. Pour modifier ce comportement, il est possible d'ajouter des modificateurs à la requête:
SELECT order_id,product_name,qty FROM orders INTO OUTFILE '/tmp/orders.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n'
Dans cet exemple, chaque champ sera placé entre guillemets, séparés par des virgules et chaque ligne sera affichée sur une nouvelle ligne séparée par une nouvelle ligne (\ n). Un exemple de sortie de cette commande ressemblerait à ceci:
"1","Tech-Recipes sock puppet","14.95" "2","Tech-Recipes chef's hat","18.95"
N'oubliez pas que le fichier de sortie ne doit pas déjà exister et que l'utilisateur MySQL est en cours d'exécution car il dispose des droits en écriture sur le répertoire dans lequel MySQL tente d'écrire.
Syntaxe
SELECT Your_Column_Name
FROM Your_Table_Name
INTO OUTFILE 'Filename.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
Ou vous pouvez essayer de récupérer la sortie via le client:
Vous pouvez essayer d'exécuter la requête à partir du client local et rediriger la sortie vers une destination de fichier locale:
mysql -user -pass -e "select cols from table where cols not null" > /tmp/output
Vous pouvez écrire les codes suivants pour accomplir cette tâche:
SELECT ... FROM ... WHERE ...
INTO OUTFILE 'textfile.csv'
FIELDS TERMINATED BY '|'
Il exporte le résultat au format CSV, puis l'exporte dans une feuille Excel.