Как выполнить (через муравей) набор файлов sql с командной строкой mysql - PullRequest
2 голосов
/ 01 февраля 2012

Я хочу выполнить все файлы 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>

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

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

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

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

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

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

1 Ответ

0 голосов
/ 01 февраля 2012

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

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

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

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

представлен полностью.
...