ANT任务运行带有可配置数据库名称的SQL脚本

时间:2011-09-06 15:28:43

标签: mysql ant sql-drop

我正在尝试创建一个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 ant文件:

<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属性之后附加数据库名称,但这里是catch,我的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 个答案:

答案 0 :(得分:2)

你可以

  • 从其余的
  • 中拆分rebuild.sql中的前3行(序言)
  • 使用cat,echo等创建序言,使用参数$ {dbname}并将rebuild.sql的(常量)主体重定向到&gt; parambuild.sql
  • 调用生成的parambuild.sql