Guardar el resultado de una consulta MySQL en un archivo de texto

Consultas:
Como podemos generar un arhivo de texto a partir de una consulta MySQL?
Como podemos volcar los datos de una consulta MySQL en un archivo de texto?

Respuesta:
MySQL permite hacer consultas con la opción INTO OUTFILE, que permite guardar en una archivo de texto el resultado de cualquier consulta.

Veamos un ejemplo. Tenemos la tabla clientes1:

mysql> select * from clientes1;
+-----------+--------+----------+
| dni       | nombre | apellido |
+-----------+--------+----------+
| 23232323T | Juan   | Soria    |
| 24242424Y | Pablo  | Alboran  |
| 77777777P | Pedro  | Lindo    |
+-----------+--------+----------+
3 rows in set (0.00 sec)



Como queremos guardar esta consulta en un archivos de texto, la volvemos a lanzar pero con la opción INTO OUTFILE, e indicamos la ruta donde lo queremos guardar:

mysql> SELECT * FROM clientes1
    -> INTO OUTFILE '/tmp/clientes1.txt';
Query OK, 3 rows affected (0.00 sec)



Comprobamos que se ha generado correctamente el archivo de texto resultante de la consulta:

> cat /tmp/clientes1.txt
23232323T       Juan    Soria
24242424Y       Pablo   Alboran
77777777P       Pedro   Lindo




*nota1: Si al ejecutar la consulta con la opción INTO OUTFILE devuelve el siguiente error…

mysql> SELECT * FROM clientes1 INTO OUTFILE '/tmp/clientes1.txt';
ERROR 1 (HY000): Can't create/write to file '/tmp/clientes1.txt' (Errcode: 13)

…una opción es cambiar los permisos de la carpeta de destino, en este caso /tmp
Lo hacemos así:

> chown root:root /tmp
> chmod 1777 /tmp
> /etc/init.d/mysqld restart






Si el post te ha ayudado a salir de un marrón, te ha servido pá lo que sea o simplemente te ha gustado y quieres colaborar puedes pinchar en la publicidad ;) Gracias!

6 thoughts on “Guardar el resultado de una consulta MySQL en un archivo de texto

  1. excelente! pero como podria hacer para que desde mi aplicacion web se guarde dicho archivo en una carpeta del servidor de la aplicacion? Gracias

    • Hola,

      Entiendo que el servidor web y el de aplicativos están en máquinas distintas.
      También doy por entendido que el servidor web es un linux.

      Un opción sería compartir una carpeta del servidor de aplicación con permisos para que MySQL pudiera copiar archivos y mapearla en el servidor web con el comando mount.

      Espero te sea de ayuda. Un saludo.

  2. Buen dia, como se le haria para que la salida del archivo fuera en la maquina del usuario, que por obvias razones no tendria por que tener acceso al servidor, solo que por la aplicacion WEB.

Leave a Reply

Your email address will not be published. Required fields are marked *