无法逃脱单引号db2 sql查询通过shell脚本运行

时间:2013-11-20 19:37:16

标签: sql shell db2

对此可能有一个非常简单的解决方案,但我已经尝试了我能想到的每一个变体,但仍然无法摆脱错误:

我是通过shell脚本运行的:

su - myid -c 'db2 -v "EXPORT TO '/tmp/file.out' OF DEL MODIFIED BY COLDEL| select A, B, C FROM mytable where C = '' and ( F = 1 or F = 2 or F = 3 or F = 4 ) "'

这是我得到的错误:

SQL0104N  An unexpected token "=   and ( status" was found following "mytable
where C".  Expected tokens may include:  "<space>".  SQLSTATE=42601

非常感谢任何帮助

2 个答案:

答案 0 :(得分:1)

如果您使用bash

,则可以使用ANSI引用的字符串
su - myid -c $'db2 -v "EXPORT TO \'/tmp/file.out\'...'

您可以使用\'引用单引号。在POSIX shell中,您必须使用双引号,并引用嵌入的双引号:

su - myid -c "db2 -v \"EXPORT TO '/tmp/file.out' ..."

答案 1 :(得分:0)

我明白了。这是我更新的查询:

su - myid -c 'db2 -v "EXPORT TO '/tmp/file.out' OF DEL MODIFIED BY COLDEL| select A, B, C FROM mytable where C = '\'''\''  and ( F = 1 or F = 2 or F = 3 or F = 4 ) "'

我不得不将单个'替换为'\'''\''&lt; ---这些都是单引号