自动化 DBA
在设置目标测试环境时,经常需要执行一些手动操作,例如配置数据库、插入测试数据、删除旧条目以及其他重复性(并且容易出错)流程。幸运的是,在部署期间处理数据库可以变得更加简单。
Data Definition Language(DDL)语句(如删除现有数据库、创建数据库和创建数据库用户)以及 Data Manipulation(DML)语句(如 insert 语句)可以轻松地脚本化并作为 Ant 构建脚本的一部分运行。而且,还可以远程执行这些语句。
例如,通过从目标环境 .properties 文件传递一个 db.url.system 属性(如清单 4 所示),构建环境可以针对一个远程数据库执行 SQL 语句: 清单 4. 创建数据库和插入数据的脚本
<target name="refresh-database" depends="create-database,insert-data" />
<target name="create-database">
<sql driver="${db.driver}"
url="${db.url.system}"
userid="${db.username.system}"
password="${db.password.system}"
src="${database.dir}/create-database.sql">
<classpath>
<pathelement location="${mysql-connector.jar}"/>
</classpath>
</sql>
</target>
...
<target name="insert-data">
<sql driver="${db.driver}"
url="${db.url}"
userid="${db.username}"
password="${db.password}"
src="${database.dir}/insert-data.sql">
<classpath>
<pathelement location="${mysql-connector.jar}"/>
</classpath>
</sql>
</target>
|
清单 5 中 insert-data.sql 文件的内容是从清单 4 的 insert-data 目标调用的。任何 SQL 语句,DDL 或 DML,都可通过 Ant 的 sql 任务以类似方式执行。 清单 5. 执行数据插入的 SQL 语句
insert into beer(id, beer_name, date_received) values
(1, 'Samuel Adams Lager','2006-12-09');
insert into beer(id, beer_name, date_received) values
(2, 'Guinness Stout','2006-12-29');
insert into beer(id, beer_name, date_received) values
(3, 'Olde Saratoga Lager','2007-02-14');
insert into beer(id, beer_name, date_received) values
(4, 'Sierra Nevada Pale Ale','2007-05-14');
|
现在我已经更新了远程数据库,下一个逻辑步骤是向运行 Tomcat 的远程环境部署一些资源。
(编辑:aniston)
|