目前,我在KSH中写了一个简单的脚本,该脚本应该从DB中拿出一些字符串,并将其列在外壳上。这就是它应该工作的方式:

  • 查询所有数据的数据库
  • 将它们导出到文本文件
  • 使用 尴尬 显示不同的列

问题是我要查询的表的两个字段包含句子。显然,尴尬的是“思考”,不同单词之间的白色空间是列之间的分离器,所以我提出了以下解决方案:

  • 从表中选择 * *进入由'''''''
  • 使用awk列出结果(显然现在分离器是',')

但是在这里我还有另一个问题,尽管我已经

  • 将文件特权授予我正在使用的MySQL用户
  • 在该目录上给MySQL 777送给它应该写的

即便如此,我也会收到以下错误:

'path':无法创建/写入文件'文件'(Errcode:13)

由于这个问题,我开始冲浪以找到答案,我发现了一个“不完整”的答案。在某个站点中,他们建议:

  • Chown root:root /tmp

  • CHMOD 1777 /TMP

  • /etc/init.d/mysqld start

我认为,如果此解决方案在 /TMP上正常工作,那么我选择的任何其他目录都不会有任何问题。显然我完全错了:)。如果我要给外档选项的路径是 /tmp /'文件',那么没有问题,任何其他路径都会返回上一个错误。那么我是否找到了问题的“解决方案”?好吧,是的,但是要使用这个脚本,有人必须:

  • 拥有具有文件特权的MySQL用户
  • 拥有 /tmp中的“ rm”文件的权利(mysql的输出文件暂时)

而且我不认为这很甜蜜。那我问你什么?以下:

  • 我如何强制MySQL在我想要的任何地方编写文件?
  • 您是否比我更可行和“甜”解决方案来建议我?

啊,我正在使用Ubuntu 10.4。感谢您的任何帮助。

有帮助吗?

解决方案

更好的解决方案是重定向输出:

mysql --default-character-set=utf8 -uuser -ppass -s -e "SELECT * FROM mytable;" > results.txt

介意 -s 选项:

  -s, --silent        Be more silent. Print results with a tab as separator,
                      each row on new line.
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top