1

我正在使用 db2 export 将数据保存到 CSV 文件。

最终,我需要一个构建一个脚本,该脚本将接收一个 SQL,运行它并将其导出。我已经准备好了所有这些,但是某些查询会导致错误。

目前有两种情况会导致错误:

1 - 使用通配符。壳牌扩展杀死了这一点。

将整个 SQL 包含在 ' 中似乎可以解决这个问题,但最佳实践是什么?似乎有一些边缘情况我还没有解决。

2 - 我不能在 where 子句中使用字符串:

bash-3.00$ db2 export to /tmp/text of DEL 'select * from SCHEMA.TABLE where COL='STRING''
SQL3022N  An SQL error "-206" occurred while processing the SELECT string in
the Action String parameter.

SQL0206N  "STRING" is not valid in the context where it is used.

即使更改为特定列以从整个 SQL 中选择和删除 '' 也不会改变它。

有任何想法吗?

谢谢,

亚历克斯

4

2 回答 2

3

@mru 走在正确的轨道上,但我认为一个工作示例会更有帮助:

 db2 "export to /tmp/text of DEL select * from SCHEMA.TABLE where COL='STRING' "

这里的重要因素是 SQL select 没有被引用,只是字符串文字的内容。

这是另一种转义不能很好地使用命令行 shell 的字符的方法:

db2 export to /tmp/text of DEL select \* from SCHEMA.TABLE where COL=\'STRING\'
于 2012-05-15T17:21:45.877 回答
0

当它们关闭引号时,您必须转义查询字符串中的单引号。看看 如何在单引号字符串中转义单引号?一个解法。但在你的情况下,我认为使用双引号而不是单引号就足够了。

于 2012-05-15T17:12:36.913 回答