gpt4 book ai didi

php - 如何让用户在 MySQL 处理后检索文件?

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:29 25 4
gpt4 key购买 nike

我正在尝试创建一个在 Inmotion 托管的 VPS Linux 服务器上运行的网站,该网站允许用户上传 txt、csv 或 excel 文件。上传上述文件后,将使用一些调用 MySQL 函数的 PHP 对其进行处理。到目前为止一切正常。处理完成后,MySQL 会将数据库写入 OUTFILE。这是我遇到问题的地方。

我无法将 OUTFILE 写入任何目录,它必须在 MySQL 数据目录或“/var/etc/tmp”目录中。否则它会抛出 Errcode 13: permission denied 错误。真的,我的问题是:

  1. 如果可能,如何让 MySQL 写入数据目录之外的目录?如果可能,如何做到这一点?

  2. 如果不可能,我如何将文件从位于“var/etc/tmp”的 tmp 文件移动到“/home/user/Directories”等目录?

希望我提供了足够的信息。这是我在 StackExchange 上的第一个问题!

谢谢!

最佳答案

正如评论者已经指出的那样,使用 MySQL 将处理后的数据写入文件并不能很好地扩展,也不是其他与您合作或在您之后维护系统的人容易理解的东西。

如果您只需要将处理过的 .csv 转储到某处,请使用 PHP 为您完成。如果您要转储 .csv 供以后检索,并且 MySQL 中仍有数据,那么为什么需要 .csv

直接回答第 2 个问题:在写入文件后使用 PHP 移动文件。

rename("/var/etc/tmp/your_file.csv", "/home/user/Directories/your_file.csv");

编辑

根据您说明此问题目标的评论,并且由于您使用的是 Linux,您也许可以只使用 bash 命令为您完成此操作。如果要为所有行添加相同的字符作为 csv 文件中的新列,则可以使用 sed 来完成。为了这个例子,我假设文件中的最后一列后面没有定界符。我也只是使用大写字母 A 作为占位符。

sed -e 's/$/,A/' -i filename.csv

现在我的 Linux-foo 有点生疏了,所以请先在您的环境中使用不重要的测试数据对其进行测试。

关于php - 如何让用户在 MySQL 处理后检索文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45576206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com