Как выполнить (через ant) ​​набор файлов sql с помощью командной строки mysql

Я хочу выполнить все файлы sql, которые сопротивляются в данном каталоге. Вызов, который я хочу сделать, выглядит примерно так:

mysql --host=dbbackend --user=stack --password=overflow dbname -e 'source file1.sql'

Это можно выразить как:

  <apply executable="mysql" dir="." failonerror="true">
      <arg value="--host=dbbackend"></arg>
      <arg value="--user=stack"></arg>
      <arg value="--password=overflow"></arg>
      <arg value="mydbname"></arg>
      <arg value="--e source dummy.sql"></arg>
      <fileset dir="${db.dump.location.data}" casesensitive="no" description="take all sql files">
          <patternset>
              <include name="**/*.sql" />
          </patternset>
      </fileset>
  </apply>

Если у меня есть 3 файла sql в этом каталоге, то dummy.sql вызывается 3 раза. Все идет нормально. Есть ли заполнитель для изменения этой строки:

      <arg value="--e source dummy.sql"></arg>

в:

      <arg value="--e source ${unknown.placeholder.name}"></arg>

Если есть заполнитель, я хочу использовать его для атрибута «вход» тега «применить» (и удалить аргумент «-e»).

Для элемента «применить» доступен тег «srcfile», но я не могу его вызвать (не работает):

      <arg value="--e source"></arg>
      <srcfile/>

Есть ли у вас предложения о том, как это сделать с собственным объявлением муравья? Можно ли создать обходной путь, используя antcall+fileset (+placeholder)?

Noobish обходной путь состоит в том, чтобы выполнить итерацию через набор файлов и создать временный файл sql со ссылками на файлы sql. В качестве последнего шага: назовите его статическим через «-e». Но это обходной путь, который я хочу удалить (по этому вопросу).

PS: я не хочу использовать функции ant-contrib.


person user1182585    schedule 01.02.2012    source источник
comment
Немного не по теме, так как вы получили свой ответ. Вы можете написать <arg value=".." />, вам не обязательно использовать </arg>, просто напишите с />. Ах да,... и примите ответ, если вы получили свой.   -  person Paul Peelen    schedule 22.03.2012


Ответы (1)


Почему бы не использовать задачу ant sql, которая предназначена именно для того, что вам нужно. сделать?

В противном случае вы можете использовать вложенный элемент srcfile:

<apply ... parallel="false">
  <...>
  <arg value="--e source" />
  <srcfile/>
  <fileset ...></fileset>
</apply>

На странице руководства задачи применения есть полный пример.

person JB Nizet    schedule 01.02.2012