Exportar una consulta de Mysql en un fichero CSV

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:

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.