在Web应用程序上下文中使用mysql INTO OUTFILE

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

我想快速将数据从mysql导出到输出文件。事实证明,INTO OUTFILE语法似乎领先于我在PHP性能方面可以做的任何处理。然而,这种方法似乎充满了问题:

  1. 输出文件只能在/ tmp或/ var / lib / mysql /中创建(mysqld用户需要写权限)
  2. 输出文件所有者和组将设置为mysqld
  3. 由于像“私人tmp”这样的设置,tmp dir几乎就是垃圾箱。

在管理用户帐户/文件权限方面,我如何管理这不是一场噩梦?我需要从我的PHP脚本访问输出文件,如果可能的话我也想将此文件输出到应用程序目录。当然,如果有另一种方法以性能有效的方式导出我的查询结果,我想知道它。

目前我正在考虑以下方法:

  • 将mysqld用户添加到“www-data”组以访问应用程序文件,写入应用程序目录,其他www-data用户希望能够访问输出文件。
php mysql file-permissions tmp
1个回答
1
投票

我无法获得为mysql用户工作的访问权限。让脚本将用户添加到www-data组或其他此类措施也会增加应用程序部署开销。

我决定使用symfony Process组件的程序管道方法。

mysql -u <username> -p<password> <database> -e "<query>" | sed 's/\t/","/g;s/^/"/;s/$/"/;' > /output/path/here.csv

请注意,如果您的列中包含保留字符(如\,“\ n等),则csv格式可能会中断。您还需要转义这些字符(例如”to“)并可能执行有关mysql输出的操作null值为NULL(字符串)。

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