在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\data
find这个文件,但是如果你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
的文件