如何从DB2导出*或WHERE子句定义字符串

时间:2012-05-15 17:08:11

标签: sql db2 export export-to-csv

我正在使用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中选择和删除''也不会更改它。

有什么想法吗?

谢谢,

亚历

2 个答案:

答案 0 :(得分: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\'

答案 1 :(得分:0)

您必须在查询字符串中转义单引号,因为它们会关闭引号。看看How to escape single-quotes within single-quoted strings?解决方案。但在你的情况下,我认为应该足够使用双引号而不是单引号作为报价。