我找不到标准的通用解决方案,因此每个数据库都需要自己的测试集。
例如,对于 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