PHP - 将数据库记录直接导出到 CSV 文件

问题描述 投票:0回答:1

我正在尝试通过在没有 root 用户的 WSL 环境上执行 Laravel PHP 脚本,使用单个查询将行数据集导出到 csv/txt 文件,如herehere所述。

我发现的问题与那些帖子中提到的相同,但我无法下定决心解决它。

首次在 MySQL 中执行类似的 SQL 查询时,例如:

SELECT * INTO OUTFILE "/tmp/posts.csv" FIELDS TERMINATED BY "," LINES TERMINATED BY "\n" FROM posts;

收到了

错误代码:1.无法创建/写入文件“mp\posts.csv”(错误代码:2 - 没有这样的文件或目录)

无论目录是什么(我已经尝试过很多目录),除了 MySQL 默认目录,部署后我将无法访问该目录。

该文件存在并且为空,所以我猜这是相同的权限问题,到目前为止我检查:

  • show grants
    显示
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION
  • SHOW VARIABLES LIKE "secure_file_priv";
    返回 null
  • GRANT FILE ON *.* TO 'root'@'localhost';
    (作为测试)结果相同,没有变化。
  • 我尝试使用
    root
    用户执行 PHP 脚本,结果相同。

有什么想法缺少什么或需要采取什么步骤吗?

php mysql
1个回答
0
投票

最后,我在

secure_file_priv
变量中添加了完整的本地路径,并且通过 MySQL 工作台的 SQL 查询正确执行,这样就解决了这个问题!当通过 PHP 脚本尝试相同的查询时(我位于 Windows 10 WSL 子系统中),脚本会失败,并警告目录不正确,我必须使用之前设置的目录。我想这可能是因为 WSL 目录没有正确映射

© www.soinside.com 2019 - 2024. All rights reserved.