3

我正在尝试创建一个带有一些数据库属性并执行 MYSQL 脚本的 ANT 任务。对于特定的数据库,它工作正常,我所拥有的是以下内容:

一个可配置的属性文件:

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 文件必须删除数据库(如果存在)并重建它。它看起来像这样:

重建.sql

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

CREATE TABLE `Customer` (
etc...

所以我的问题是,现在client_database是硬编码的,但我需要它是属性文件中的可配置名称。我怎么能设法将此名称传递给 sql 脚本并执行这 3 个第一条语句?

4

1 回答 1

2

你可以

  • 将rebuild.sql的前3行(序言)与其余部分分开
  • 使用参数 ${dbname} 使用 cat、echo 等创建序言,并与rebuild.sql 的(常量)主体一起重定向到 > parambuild.sql
  • 调用生成的 parambuild.sql
于 2011-09-06T15:44:24.973 回答