49

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

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

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

知道这个文件存储在哪里吗?

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

4

8 回答 8

76

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

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

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

INTO OUTFILE '/tmp/mydata.csv'

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

系统和 Linux

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

最初发布此内容几年后,我发现自己无法找到写入/tmp通过的文件

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

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

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

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

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

于 2012-07-14T14:27:22.830 回答
19

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

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

于 2012-07-14T15:07:57.797 回答
4

仅举例:

我在MySQL Workbench中运行了以下查询,并在其中找到了我的文件

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

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

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

SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ',';
于 2015-02-03T14:09:22.523 回答
2

我找到了使用以下命令创建的 INTO OUTFILE 文件

select name from users into outfile "name.csv"

在以下位置

C:\ProgramData\MySQL\MySQL 服务器 5.6\data\name.csv

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

于 2015-03-02T10:21:49.720 回答
2

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

于 2016-08-01T16:15:24.217 回答
0

您在 中找到该文件,但如果您给出以下C:\wamp\bin\mysql\mysql5.5.24\data名称,则名称将是UsersNamecarro.txtselect * from carro where id_cor<4 INTO OUTFILE 'C:\Users\Name\carro.txt';

所以只需写.....OUTFILE 'C:\carro.txt'来获取文件夹中调用carro.txtdata文件

于 2014-04-17T16:23:57.663 回答
0

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

MariaDB 的数据目录

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

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

于 2019-03-27T21:51:00.773 回答
0

如果您没有指定绝对路径而是使用类似INTO OUTFILE 'output.csv'or的东西INTO OUTFILE './output.csv',它会将输出文件存储到show variables like 'datadir';.

于 2021-01-21T10:56:14.347 回答