Как я могу прочитать вывод sql-запроса в свойство ant? - PullRequest
8 голосов
/ 30 июня 2009

Я бы хотел передать результат простого SQL-запроса (что-то вроде: select SP_NUMBER from SERVICE_PACK), который я запускаю внутри своего скрипта ant (используя задачу sql), обратно в свойство ant (например, service.pack.number).

Задача sql может выводить в файл, но есть ли более прямой путь?

Ответы [ 3 ]

8 голосов
/ 02 июля 2009

Хотя я бы предпочел не создавать файл, я в итоге выбрал следующее решение:

Задача 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 голос
/ 30 июня 2009

Возможно, задача Ant exec здесь более полезна? Вы можете выполнить автономно и получить результат в свойстве через outputproperty. К сожалению, вам придется выполнять свой SQL каким-то автономным способом.

Или стоит взглянуть на код задачи Ant Sql и изменить его так, чтобы он принимал outputproperty? Это звучит немного болезненно, но я думаю, что это может быть очень простая модификация, если вы не можете найти ничего более прямого.

0 голосов
/ 05 марта 2012

пользователей MySQL - мне пришлось изменить запрос следующим образом:

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

Без функции CONCAT я только что вернул текст «1» (представляющий мой идентификатор) в файле свойств. Кроме того, CAST необходим в системе MySQL, в противном случае объединенное поле возвращается как BLOB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...