在MySQL中找不到由outfile创build的文件

我正在使用以下查询来创build一个CSV文件

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

但是我无法findmydata.csv文件,当我通过filezillasearch。

任何想法这个文件被储存?

查询成功运行,没有任何错误! 任何帮助?

MySQL可能会将文件写入自己的数据目录,例如/var/lib/mysql/<databasename> 。 要指定path,请使用完整path。

但是,它必须是一个可由MySQL服务器守护程序运行的用户帐户写入的目录。 出于这个原因,我经常使用/tmp

指定要写入的path,如下所示:

 INTO OUTFILE '/tmp/mydata.csv' 

注意MySQL将把这个文件写在MySQL 服务器上 ,而不是在你的客户端机器上。 因此,远程连接将在远程服务器上创build输出文件。 另请参阅SELECT INTO OUTFILE local? 了解更多细节和解决方法。

系统和Linux

有关在运行systemd的Linux系统上写入/tmp注意事项

最初张贴这个几年后,我发现自己无法find写入/tmp通过的文件

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

在使用systemd运行Fedora Linux的MariaDB 5.5服务器上。 该文件/tmp/outfile.csv按照指定直接写入/tmp/outfile.csv ,而是在/tmp下的systemd目录下创build的:

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

虽然文件outfile.csv本身和tmp/子目录都创build了全局可写的,但systemd服务目录本身拥有700个权限,并且是root拥有的,需要使用sudo访问来检索其中的文件。

将MariaDB中的绝对path指定为/tmp/outfile.csv并将其指定为outfile.csv ,而不是将MariaDB的绝对path指定为当前选定数据库的MariaDB数据目录。

我怀疑你正在寻找你的客户机上的文件。

SELECT .. INTO OUTFILE将文件写入服务器机器。

举个例子:

我已经在MySQL Workbench中运行下面的查询,我发现我的文件

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

d:\ WAMP \ BIN \ mysql的\ mysql5.6.17 \ DATA \ DB \ FILE.CSV

你可以使用下面的例子来设置你的文件path:

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

我发现我的INTO OUTFILE文件,使用下面的命令创build

select name from users into outfile "name.csv"

在以下位置

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

这可能是默认的位置,因为我从来没有改变任何东西。

如果在OS X上有任何人遇到这个问题,安装了自制软件的mysql默认输出位于/usr/local/var/mysql/database-name/

你可以在C:\wamp\bin\mysql\mysql5.5.24\datafind这个文件,但是如果你select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';了以下select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

所以,只要写出.....OUTFILE 'C:\carro.txt'来获取data文件夹中名为carro.txt的文件