Si tienes una tabla o consulta que quieres exportar a CSV tienes
dos maneras muy fáciles de hacerlo. La primera es dentro de la
consola mysql utilizando después del SELECT la opción
INTO OUTFILE. Esto escribirá en el fichero
externo que indiques el contenido de la consulta. La segunda
opción es desde la propia línea de comandos utilizando la opción
"Batch".
Diferencias entre método 1 y 2: El primero permite especificar la
terminación de las líneas en el csv así como si quieres comillas
en cada campo. El segundo escribe en el CSV los campos
delimitados por tabulación sin más. La segunda es la
opción más senclla y rápida para la mayoría de casos.
Opción 1: Exportar una consulta SQL a CSV desde la consola Mysql
Si por ejemplo quieres que cada campo de tu consulta se separe
con punto y coma y cada registro por un salto de
línea windows (\r\n) o Unix (\n), lo que vendría a ser un CSV
vaya!, solo tienes que hacer algo como:
SELECT
*
FROM
tu_tabla
WHERE
condicion
-- Aqui viene la exportación
INTO OUTFILE
'/tmp/fichero_salida.csv'
FIELDS TERMINATED BY ';'
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\r\n';
Puedes cambiar el formato fácilmente cambiando los caracteres. En
este caso el fichero final estaría en la carpeta /tmp, un lugar
fácil para evitar problemas de permisos
Opción 2: Exportar una consulta SQL a CSV desde terminal
Este método es todavía más simple, pero asume que quieres los
campos separados por tabulación, cosa que si vas
a usar un Excel o similar quizá sea lo más práctico y rápido.
Para ello basta con pasar dos parámetros básicos:
- -e: Indicando la consulta que quieres hacer entre comillas
- -B: para indicar que quieres recibir la consulta en modo
"batch" (campos separados por tabs)
Supongamos que nos conectamos a mysql, con el contenido de la
primera línea...
mysql -u root --password=elquesea mibasededatos \
-e "SELECT * FROM tabla where ...." -B > fichero_salida.csv
... en la segunda tienes la parte que hace la exportación. Ahora
tendrás en el fichero_salida.csv el resultado de la
consulta delimitado por tabulaciones y si hay cualquier error lo
verás por pantalla.