在MySQL中找不到outfile创建的文件

时间:2012-07-14 14:17:36

标签: php mysql file file-io

我使用以下查询来创建CSV文件

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

但是当我搜索filezilla时,我无法在任何地方找到mydata.csv文件。

知道存储此文件的位置吗?

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

8 个答案:

答案 0 :(得分:55)

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

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

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

INTO OUTFILE '/tmp/mydata.csv'

请注意,MySQL会将文件写在MySQL 服务器上,而不是在客户端计算机上。因此,远程连接将在远程服务器上创建输出文件。有关更多详细信息和解决方法,另请参阅SELECT INTO OUTFILE local ?

Systemd&amp;的Linux

关于在运行/tmp 的Linux系统上写入systemd的说明:

最初发布此文件几年后,我发现自己无法通过

找到写入/tmp的文件
...INTO OUTFILE '/tmp/outfile.csv'

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

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

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

不是将MariaDB中的绝对路径指定为/tmp/outfile.csv并将其相对指定为outfile.csv,而是将文件按预期编写到当前所选数据库的MariaDB数据目录中。

答案 1 :(得分:19)

我怀疑您正在客户端计算机上查找该文件。

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

答案 2 :(得分:2)

仅举例:

我在 MySQL Workbench &amp;我在

中找到了我的档案
SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',';
  

<强> d:\瓦帕\ BIN \ MySQL的\ mysql5.6.17 \数据\分贝\ FILE.CSV

您可以使用以下示例设置文件路径:

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

答案 3 :(得分:2)

我找到了使用以下命令

创建的INTO OUTFILE文件
  

select name from users into outfile "name.csv"

位于以下位置

  

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

这可能是默认位置,因为我从未改变任何内容。

答案 4 :(得分:1)

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

答案 5 :(得分:0)

您可以在C:\wamp\bin\mysql\mysql5.5.24\data中找到该文件,但如果您提供了以下UsersNamecarro.txt

,则该名称将为select * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

所以只需编写.....OUTFILE 'C:\carro.txt'即可在carro.txt文件夹中获取名为data的文件

答案 6 :(得分:0)

+1到@ michael-berkowski Windows所需的答案 是(正如他所说的)

  

MariaDB的数据目录

具体来说,我的数据库位于名为“ mydatabase”的数据库的数据文件夹中

  

C:\ Program Files \ MariaDB 10.3 \ data \ mydatabase

答案 7 :(得分:0)

如果您不指定绝对路径,而是使用 INTO OUTFILE 'output.csv'INTO OUTFILE './output.csv' 之类的内容,它会将输出文件存储到 show variables like 'datadir'; 指定的目录中。