No se puede encontrar el archivo creado por archivo de salida en MySQL

Estoy usando la siguiente consulta para crear un archivo CSV

SELECT email INTO OUTFILE "mydata.csv" FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n" FROM users; 

Pero no puedo encontrar el archivo mydata.csv en ninguna parte cuando busco en Filezilla.

¿Alguna idea de dónde se está almacenando este archivo?

La consulta se ejecuta con éxito sin ningún error! ¿Alguna ayuda?

MySQL puede escribir el archivo en su propio directorio de datos, como /var/lib/mysql/ por ejemplo. Para especificar la ruta, usa una ruta completa.

Sin embargo, debe ser un directorio que se pueda escribir en la cuenta de usuario con la que se ejecuta el daemon del servidor MySQL. Por esa razón, a menudo uso /tmp :

Especifique la ruta en la que desea escribir como en:

 INTO OUTFILE '/tmp/mydata.csv' 

Y tenga en cuenta que MySQL escribirá el archivo en el servidor MySQL, no en su máquina cliente. Por lo tanto, las conexiones remotas crearán archivos de salida en el servidor remoto. Ver también SELECCIONAR EN OUTFILE local? para más detalles y soluciones.

Systemd y Linux

Una nota sobre escribir en /tmp en un sistema Linux ejecutando systemd :

Algunos años después de publicar originalmente esto, no pude encontrar un archivo escrito en /tmp través de

 ...INTO OUTFILE '/tmp/outfile.csv' 

en un servidor MariaDB 5.5 ejecutando Fedora Linux con systemd . En lugar de escribir el archivo directamente en /tmp/outfile.csv como se especificó, ese directorio y archivo se crearon debajo de un directorio systemd en /tmp :

 /tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv 

Mientras que el archivo outfile.csv y el subdirectorio tmp/ fueron creados con escritura mundial, el directorio de servicios systemd en sí tiene 700 permisos y es propiedad de la raíz, lo que requiere el acceso sudo para recuperar el archivo dentro de él.

En lugar de especificar la ruta absoluta en MariaDB como /tmp/outfile.csv y especificarla relativamente como outfile.csv , el archivo se escribió como se esperaba en el directorio de datos de MariaDB para la base de datos seleccionada actualmente.

Sospecho que estás buscando el archivo en tu máquina cliente.

SELECT .. INTO OUTFILE escribe el archivo en la máquina del servidor.

Solo por ejemplo:

He corrido debajo de la consulta en MySQL Workbench y encontré mi archivo en

 SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ','; 

D: \ wamp \ bin \ mysql \ mysql5.6.17 \ data \ db \ file.csv

Puede usar el siguiente ejemplo para establecer su ruta de archivo:

 SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ','; 

Encontré mis archivos INTO OUTFILE, creados con el siguiente comando

select name from users into outfile "name.csv"

en la siguiente ubicación

C: \ ProgramData \ MySQL \ MySQL Server 5.6 \ data \ name.csv

Esta es probablemente la ubicación predeterminada, ya que nunca he cambiado nada.

En caso de que alguien en OS X tenga este problema, mysql instalado con homebrew tiene salida predeterminada ubicada en /usr/local/var/mysql/database-name/

El archivo se encuentra en C:\wamp\bin\mysql\mysql5.5.24\data , pero el nombre será UsersNamecarro.txt si le dio la siguiente select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

Así que solo escriba .....OUTFILE 'C:\carro.txt' para obtener el archivo llamado carro.txt en data carpeta de data