我正在使用以下查询来创建 CSV 文件
SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;
但是当我通过 filezilla 搜索时,我无法在任何地方找到 mydata.csv 文件。
知道这个文件存储在哪里吗?
查询成功运行,没有任何错误!有什么帮助吗?
MySQL 可能正在将文件写入自己的数据目录,/var/lib/mysql/<databasename>
例如。要指定路径,请使用完整路径。
但是,它必须是运行 MySQL 服务器守护程序的用户帐户可写的目录。出于这个原因,我会经常使用/tmp
:
指定要写入的路径,如下所示:
INTO OUTFILE '/tmp/mydata.csv'
请注意,MySQL 将在 MySQL服务器上写入文件,而不是在您的客户端计算机上。因此远程连接将在远程服务器上创建输出文件。另请参见SELECT INTO OUTFILE local ? 有关更多详细信息和解决方法。
/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 数据目录中。
我怀疑您正在客户端计算机上查找该文件。
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
您可以使用以下示例设置文件路径:
SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ',';
我找到了使用以下命令创建的 INTO OUTFILE 文件
select name from users into outfile "name.csv"
在以下位置
C:\ProgramData\MySQL\MySQL 服务器 5.6\data\name.csv
这可能是默认位置,因为我从未更改任何内容。
如果 OS X 上的任何人遇到此问题,mysql
使用 homebrew 安装的默认输出位于/usr/local/var/mysql/database-name/
您在 中找到该文件,但如果您给出以下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
文件
+1 给@michael-berkowski ,我需要的 Windows答案是(正如他所说)
MariaDB 的数据目录
具体来说,我的位于名为“mydatabase”的数据库的数据文件夹中
C:\Program Files\MariaDB 10.3\data\mydatabase
如果您没有指定绝对路径而是使用类似INTO OUTFILE 'output.csv'
or的东西INTO OUTFILE './output.csv'
,它会将输出文件存储到show variables like 'datadir';
.