我正在尝试创建一个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属性,但这里有个问题,我的重建。SQL文件必须删除数据库(如果存在)并重新构建它。它看起来像这样:
rebuild.sql
DROP DATABASE IF EXISTS `client_database`;
CREATE DATABASE `client_database`
USE `client_database`;
CREATE TABLE `Customer` (
etc...
所以我的问题是,现在client_database
是硬编码的,但我需要它在属性文件中是一个可配置的名称。我怎么能设法把这个名字传递到sql脚本和执行这3个第一个语句?
你可以
- 从重建中拆分前3行(序言)。sql从rest
- 使用参数${dbname}创建带有cat、echo等的序言,并与重建的(常量)主体一起重定向。
- 调用生成的参数build.sql