Détails
Comment sortir les résultats d'une requête MySQL au format CSV ?
Existe-t-il un moyen simple d'exécuter une requête MySQL à partir de la ligne de commande Linux et d'afficher les résultats au format [CSV][1] ?
Voici ce que je fais actuellement :
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ
Cela devient compliqué quand il y a beaucoup de colonnes qui doivent être entourées de guillemets, ou si les résultats contiennent des guillemets qui doivent être échappés.
1112
3
De http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
En utilisant cette commande, les noms des colonnes ne seront pas exportés.
Notez également que
/var/lib/mysql-files/orders.csv
sera sur le serveur qui exécute MySQL. L'utilisateur sous lequel le processus MySQL est exécuté doit avoir les droits d'écriture sur le répertoire choisi, ou la commande échouera.Si vous souhaitez écrire la sortie sur votre machine locale à partir d'un serveur distant (en particulier une machine hébergée ou virtualisée telle que Heroku ou Amazon RDS), cette solution n'est pas adaptée.
Cela vous donnera un fichier séparé par des tabulations. Comme les virgules (ou les chaînes contenant des virgules) ne sont pas échappées, il n'est pas simple de changer le délimiteur en virgule.
En alternative à la réponse ci-dessus, vous pouvez avoir une table MySQL qui utilise le moteur CSV.
Vous aurez alors un fichier sur votre disque dur qui sera toujours au format CSV et que vous pourrez simplement copier sans le traiter.