如何将sql查询的输出读入ant属性?

时间:2009-06-30 10:19:17

标签: sql ant

我想将一个简单的SQL查询(例如:select SP_NUMBER from SERVICE_PACK)的结果提供给我的ant脚本(使用sql任务)回到ant属性(例如{ {1}})。

service.pack.number任务可以输出到文件,但有更直接的方法吗?

3 个答案:

答案 0 :(得分:8)

虽然我宁愿不创建文件,但最终还是采用了以下解决方案:

sql任务调用如下

<sql ... print="yes" output="temp.properties"
        expandProperties="true" showheaders="false" showtrailers="false" >
        <![CDATA[
        select 'current.sp.version=' || NAME from SERVICE_PACK;
        select 'current.major.version=' || NAME from VERSION;
        ]]>
</sql>

生成的属性文件将包含:

current.sp.version=03

current.major.version=5

然后你只需加载属性文件并删除它:

<property file="temp.properties" />
<delete file="temp.properties" />

<echo message="Current service pack version: ${current.sp.version}" />
<echo message="Current major version: ${current.major.version}" />

这很有效,蚂蚁脚本中的一切都是正确的(即使它不是世界上最漂亮的东西!)。

答案 1 :(得分:1)

也许Ant exec任务在这里更有用?您可以执行独立操作,并通过outputproperty在属性中获取结果。不幸的是,你必须以某种独立的方式执行SQL。

或者值得查看Ant Sql任务的代码并修改它以接受outputproperty?这听起来有点痛苦,但我认为如果你找不到更直接的东西,这可能是一个非常简单的修改。

答案 2 :(得分:0)

MySQL用户 - 我必须像这样修改查询:

SELECT CONCAT('mytable.id=', CAST(ID as CHAR)) from mytable

没有CONCAT功能,我只是在属性文件中找回了文本“1”(代表我的id)。此外,在MySQL系统中需要CAST,否则连接字段将作为BLOB返回。