我找不到标准的通用解决方案,所以每个数据库都需要自己的测试集。
对于Oracle比如,我用来检查表,序列和索引:
select count(*) from user_tables
select count(*) from user_sequences
select count(*) from user_indexes
对于SqlServer的我用来检查表,视图和存储过程:
SELECT * FROM sys.all_objects where type_desc in ('USER_TABLE', 'SQL_STORED_PROCEDURE', 'VIEW')
最好我得到的通用(直观)解决方案是使用ANT SQL任务 - 我需要做的就是为每种类型的数据库传递不同的参数。
即Ant构建文件看起来是这样的:
<project name="run_sql_query" basedir="." default="main">
<!-- run_sql_query: -->
<target name="run_sql_query">
<echo message="=== running sql query from file ${database.src.file}; check the result in ${database.out.file} ==="/>
<sql classpath="${jdbc.jar.file}"
driver="${database.driver.class}"
url="${database.url}"
userid="${database.user}"
password="${database.password}"
src="${database.src.file}"
output="${database.out.file}"
print="yes"/>
</target>
<!-- Main: -->
<target name="main" depends="run_sql_query"/>
</project>
欲了解更多详情,请参阅ANT:
https://ant.apache.org/manual/Tasks/sql.html
基本上,我想,以确保数据库之前空我开始在其上运行一个安装过程(以防止用户意外针对已经包含其他数据的数据库)。 更简单的解决方案可能是可能的,但如果没有好的通用解决方案,我可以自己构建。 – 2008-09-23 04:16:51