¿Cómo se puede dar salida a los resultados de las consultas de MySQL en formato CSV?
¿Existe una forma sencilla de ejecutar una consulta MySQL desde la línea de comandos de Linux y obtener los resultados en formato CSV ?
Esto es lo que estoy haciendo ahora:
mysql -u uid -ppwd -D dbname << EOQ | sed -e 's/ /,/g' | tee list.csv
select id, concat("\"",name,"\"") as name
from students
EOQ
Se hace un lío cuando hay muchas columnas que necesitan ser rodeadas por comillas, o si hay comillas en los resultados que necesitan ser escapadas.
1112
3
Desde http://www.tech-recipes.com/rx/1475/save-mysql-query-results-into-a-text-or-csv-file/
Usando este comando los nombres de las columnas no serán exportados.
También tenga en cuenta que
/var/lib/mysql-files/orders.csv
estará en el servidor que está ejecutando MySQL. El usuario con el que se ejecuta el proceso de MySQL debe tener permisos para escribir en el directorio elegido, o el comando fallará.Si quieres escribir la salida en tu máquina local desde un servidor remoto (especialmente una máquina alojada o virtualizada como Heroku o Amazon RDS), esta solución no es adecuada.
Esto le dará un archivo separado por tabulaciones. Dado que las comas (o las cadenas que contienen comas) no se escapan, no es sencillo cambiar el delimitador a coma.
Como alternativa a la respuesta anterior, puede tener una tabla MySQL que utilice el motor CSV.
Entonces tendrás un archivo en tu disco duro que siempre estará en formato CSV que podrías simplemente copiar sin procesarlo.