use*_*822 44 php mysql file-io file
我使用以下查询来创建CSV文件
SELECT email INTO OUTFILE "mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM users;
Run Code Online (Sandbox Code Playgroud)
但是当我搜索filezilla时,我无法在任何地方找到mydata.csv文件.
知道这个文件存储在哪里吗?
查询成功运行,没有任何错误!任何帮助?
Mic*_*ski 58
MySQL可能正在将文件写入自己的数据目录,/var/lib/mysql/<databasename>例如.要指定路径,请使用完整路径.
但是,它必须是运行MySQL服务器守护程序的用户帐户可写的目录.出于这个原因,我经常使用/tmp:
指定要写入的路径,如下所示:
INTO OUTFILE '/tmp/mydata.csv'
Run Code Online (Sandbox Code Playgroud)
请注意,MySQL会将文件写在MySQL 服务器上,而不是在客户端计算机上.因此,远程连接将在远程服务器上创建输出文件.另请参见SELECT INTO OUTFILE local?了解更多详情和解决方法.
关于/tmp在运行的Linux系统上写入的注意事项systemd:
在最初发布此文件几年后,我发现自己无法找到写入/tmpvia 的文件
...INTO OUTFILE '/tmp/outfile.csv'
Run Code Online (Sandbox Code Playgroud)
在运行Fedora Linux的MariaDB 5.5服务器上systemd.不是直接将文件写入/tmp/outfile.csv指定的,而是在systemd目录下创建了该目录和文件/tmp:
/tmp/systemd-mariadb.service-XXXXXXX/tmp/outfile.csv
Run Code Online (Sandbox Code Playgroud)
虽然文件outfile.csv本身和tmp/子目录都是全局可写的,但systemd服务目录本身具有700个权限并且是root拥有的,需要sudo访问权限才能检索其中的文件.
不是将MariaDB中的绝对路径/tmp/outfile.csv指定为并相对指定,而是outfile.csv将文件按预期编写到当前所选数据库的MariaDB数据目录中.
仅举个例子:
我在MySQL Workbench中运行了以下查询,并在中找到了我的文件
SELECT * FROM `db`.`table` INTO OUTFILE 'file.csv' FIELDS TERMINATED BY ',';
Run Code Online (Sandbox Code Playgroud)
D:\wamp\bin\mysql\mysql5.6.17\data\db\file.csv
您可以使用下面的示例来设置文件路径:
SELECT * FROM `db`.`table` INTO OUTFILE 'C:\\file.csv' FIELDS TERMINATED BY ',';
Run Code Online (Sandbox Code Playgroud)