Задача ANT, выполняющая скрипт SQL с настраиваемым именем базы данных - PullRequest
3 голосов
/ 06 сентября 2011

Я пытаюсь создать задачу ANT, которая принимает некоторые свойства базы данных и выполняет сценарий MYSQL. Для конкретной базы данных она работает нормально, и у меня есть следующее:

Файл настраиваемых свойств:

sql.driver=com.mysql.jdbc.Driver
sql.url=jdbc:mysql://127.0.0.1:3306/
sql.user=admin
sql.pass=admin

И файл сборки build.xml:

<target name="rebuild-database">
     <sql driver="${sql.driver}" url="${sql.url}" userid="${sql.user}" password="${sql.pass}">
          <transaction src="db/rebuild.sql"/>
          <classpath>
               <path refid="project.class.path"/>
          </classpath>
     </sql>
</target>

Теперь это работает отлично. Скрипт sql перестраивает базу данных. Однако я хочу, чтобы это имя базы данных также можно было настраивать. Я знаю, что вы можете добавить имя базы данных после свойства sql.url, но здесь есть уловка, мой файл rebuild.sql должен удалить базу данных, если она существует, и перестроить ее. Это выглядит так:

rebuild.sql

DROP DATABASE IF EXISTS `client_database`;    
CREATE DATABASE `client_database` 
USE `client_database`;

CREATE TABLE `Customer` (
etc...

Итак, моя проблема в том, что сейчас client_database жестко задан, но мне нужно, чтобы это было настраиваемое имя в файле свойств. Как мне удалось передать это имя в сценарий sql и выполнить эти 3 первых оператора?

1 Ответ

2 голосов
/ 06 сентября 2011

Вы можете

  • разделить первые 3 строки (пролог) из rebuild.sql от остальных
  • создать пролог с помощью cat, echo и т. Д., Используя параметр$ {dbname} и перенаправить вместе с (постоянным) телом rebuild.sql в> parambuild.sql
  • вызов сгенерированного parambuild.sql
...