【发布时间】:2016-12-21 23:55:08
【问题描述】:
我编写了一个构建文件,它在某些时候将对象安装到 Sybase 数据库中。
代码由我们的开发人员提供,我不允许修改它。
如果使用isql 命令手动运行给定的SQL,它可以工作。
这是安装给定对象的构建文件的一部分:
<sql
driver="${db.driver}" url="${db.url}" userid="${db.user}"
password="${db.password}" src="${file}"
print="true" delimiter="go" delimitertype="row"
classpathref="sybase.lib.path" output="${file}.out"
errorproperty="install.failed" onerror="continue" keepformat="true" />
虽然该解决方案在大多数情况下都有效,但每次我尝试运行包含双引号 (") 的脚本时都会失败。
例如,如果 SQL 脚本包含如下内容:
declare @var varchar(30)
set @var = "SOME STRINGS"
它失败并出现错误:
[sql] com.sybase.jdbc3.jdbc.SybSQLException: Invalid column name 'SOME STRINGS'.
有人解决了这个问题吗?
我已阅读Ant sql task 的文档。
我使用的是 Ant 1.8.2 版。
我已经使用以下 jdbc 驱动程序进行了测试:
- com.sybase.jdbc3.jdbc.SybDriver
- net.sourceforge.jtds.jdbc.Driver
【问题讨论】:
-
您可以尝试将 escapeprocessing 设置为 false
-
@Matteo 我试过了,我得到了同样的错误。
-
最后我用SQL task标签替换了下面的语句:
-
我很想知道答案是否有帮助!