目前我正在用 ksh 编写一个简单的脚本,该脚本应该从数据库中获取一些字符串并将它们列在 shell 上。这是它应该如何工作的:
- 查询数据库中的所有数据
- 将它们导出到文本文件
- 使用awk显示不同的列
问题是我正在查询的表的两个字段包含句子。所以 awk 显然“认为”不同单词之间的空格是列之间的分隔符,所以我想出了以下解决方案:
- SELECT * INTO OUTFILE "输出" FIELDS TERMINATED BY ',' FROM table
- 使用 awk 列出结果(显然分隔符现在是 ',')
但在这里我有另一个问题,虽然我已经
- 授予我正在使用的 mysql 用户的 FILE 权限
- 在它应该写入的目录上给 mysql 777
即便如此我收到以下错误:
“路径”:无法创建/写入文件“文件”(错误代码:13)
对此感到沮丧,我开始上网寻找答案,但我发现了一个“不完整”的答案。在某个站点,他们建议:
chown root:root /tmp
chmod 1777 /tmp
/etc/init.d/mysqld 启动
我认为,如果此解决方案在 /tmp 上运行良好,那么在我选择的任何其他目录上都不应该有任何问题。显然我完全错了:)。如果我提供给 outfile 选项的路径是 /tmp/'file' 那么没有问题,任何其他路径都会返回我之前的错误。那么我找到问题的“解决方案”了吗?嗯,是的,但是要使用这个脚本,有人必须:
- 拥有一个具有 FILE 权限的 mysql 用户
- 有权在 /tmp 中“rm”一个文件(mysql 的输出文件是临时的)
而且我不认为这很甜蜜。那我问你什么?以下:
- 如何强制mysql在我想要的任何地方写入文件?
- 你有比我更可行和“甜蜜”的解决方案来建议我吗?
啊,我使用的是 Ubuntu 10.4。感谢您的任何帮助。