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?
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;
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}'
Pipe la réponse à tr
, comme ceci:
mysql <blah blah> -B | tr '\t' ','
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=,
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.
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.
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"} }} '