web-dev-qa-db-fra.com

Comment enregistrer le résultat de la requête MySQL dans Excel ou dans un fichier .txt?

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.

107
rɑːdʒɑ

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
175

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.

7
Charles Stevens