web-dev-qa-db-fra.com

Comment publiez-vous les résultats de la requête MySQL au format CSV (à l'écran, pas à un fichier)?

J'essaie de produire des résultats de requête dans le format délimité des virgules à l'aide de l'outil de ligne de commande MySQL. Mon utilisateur MySQL n'a pas accès à l'option "dans Outfile" référencée dans cette question:

Comment générer des résultats de la requête MySQL au format CSV?

Je suis également au courant des options -H et -X pour formater la sortie dans HTML et XML, mais il n'y a aucun moyen de produire le format CSV directement à l'écran?

J'ai trouvé cette méthode à l'aide de SED - - http://tlug.dnho.net/?q=node/209 . Mais je suis curieux de trouver une solution droite mysql.

Des idées?

25
RyanW

J'ai fini par prendre simplement la sortie de l'onglet délimitée et la copier en la collant à une feuille de calcul puis exportant celle de CSV. A également réalisé que j'aurais pu utiliser la fonction Concat ou Concat_WS pour faire le travail et le faire la prochaine fois.

http://dev.mysql.com/doc/refman/5.0/fr/string-fonctions.html#function_concat

http://dev.mysql.com/doc/refman/5.0/fr/string-fonctions.html#function_concat-ws

Sélectionnez Concat_ws (',', Field1, Field2, Field3) à partir de la table;

18
RyanW
mysql --raw --skip-column-names -u someuser -psomepass -h somehost -b somedatabase -e "select * from somedatabase.sometable;"| awk -F\\t '{print $1","$2","$3}'

-F\\t tells awk to use a tab as the delimeter on its input, and we print out the desired columns with commas as delimeters using the "," bit.  Replace "," with ":" or "|" or whatever to suit your needs.

Si vous devez citer un champ de sortie, disons 1 $, votre impression AWK ressemblerait à ceci:

awk -F\\t '{print "\""$1"\","$2","$3}'
4
Nevaar

Pipe la réponse à tr, comme ceci:

mysql <blah blah> -B | tr '\t' ','
3
Dom Storey

Si vous avez accès à mysqldump, vous pouvez utiliser quelque chose comme ça

mysqldump -u [username] -p -t -T/path/to/directory [database] --fields-enclosed-by=\; --fields-terminated-by=,
2
Alekc

Si vous avez installé MySQL Workbench, vous pouvez exécuter une requête puis cliquer sur "Exporter" au-dessus des résultats. Cela vous donnera la possibilité d'économiser en tant que .csv.

2
John

Le CLI peut produire en format délimité par tabulation, qui est presque assez bon (je parle d'expérience). Utilisez l'option -b. Le plus gros problème avec l'onglet délimitée est que je ne pouvais pas importer Excel importer ce format. Cependant, OpenOffice fait.

1
staticsan

après le modifier le format de sortie pour les résultats de la ligne de commande MySQL à CSV

 MySQL --SKIP-colonnes-Names --Batch -e 'Select * de Dump3' T | awk -f '\ t' '{sep = ""; pour (i = 1; i <= nf; i ++) {gsub (/ \\ t /, "\ t", $ i); gsub (/ \\ n /, "\ n", $ i); gsub (/ \\\\\ /, "\\", $ i); gsub (/ "/,"\"\" ", $ i); printf sep"\"" $ i "\" ""; sep = ","; si (i == nf) {printf "\ n"} }} '
1
Artur Siara