我正在使用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中选择和删除''也不会更改它。
有什么想法吗?
谢谢,
亚历
答案 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?解决方案。但在你的情况下,我认为应该足够使用双引号而不是单引号作为报价。