我找不到標準的通用解決方案,所以每個數據庫都需要自己的測試集。
對於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