DBUnit在應用間匯出匯入資料

2021-03-31 10:29:35 字數 1261 閱讀 2644

應用間的資料整合(eai)通常是兩條路子:

一是使用現成的eai、etl框架,定義一堆xml格式的對映檔案,再寫一些特殊轉換的transform class。但這樣的工程通常比較巨集大,用到最後經常會發覺還不如自己寫程式快。

二是直接自己寫程式用jdbc->sql轉換,快則快矣,但經常會寫的比較亂、特別是表多列多的時侯。

所以,我又會用萬能老倌dbunit+dom4j來匯出匯入。

dbunit因為具有xml<-->database的功能,所以很多地方都能夠擔任。用xml來寫eai,比sql語句清晰,而且效果和寫對映檔案差不多,但因為都寫在程式裡,用不著像eai框架那樣對映定義檔案、轉換類翻來覆去四處看。

另外,它本身帶了refresh(如果不存在就插入,否則就更新,以主鍵為依據), clean_insert(全部刪除再插入,和refresh比,會把不在xml中的資料刪除)等幾種操作,又簡省了程式設計的功夫。

例子**:

//dom4j建立document並向其賦值

document document = documenthelper.createdocument();

document.addelement("dataset");

element root = document.getrootelement();

while(rs.next())

//把documenth轉換為dbunit的dataset並解決中文編碼問題

inputsource is = new documentsource(document).getinputsource();

is.setencoding("gbk");

idataset dataset = new flatxmldataset(is);

//建立dbunit資料庫連線

connection conn = .....; 

databaseconnection dbcon = new databaseconnection(conn);

//執行插入操作

databaseoperation.insert.execute(dbcon, dataset);  

另外在我的專案中,目標資料庫中有很多不明所以的列(約200個),不填呢又會出錯,填呢又不知道填什麼。所以,我先用dbunit對它進行了取樣,item是從目標資料庫得到的乙個樣本,建立document的過程中,我不斷使用item.createcopy()把這條樣本轉殖出來,只置換了其中小部分源資料庫中的需要更改的值。這又是dbunit的乙個bonus :)

DBUnit在應用間匯出匯入資料

應用間的資料整合 eai 通常是兩條路子 一是使用現成的eai etl框架,定義一堆xml格式的對映檔案,再寫一些特殊轉換的transform class。但這樣的工程通常比較巨集大,用到最後經常會發覺還不如自己寫程式快。二是直接自己寫程式用jdbc sql轉換,快則快矣,但經常會寫的比較亂 特別是...

DBUnit在應用間匯出匯入資料

應用間的資料整合 eai 通常是兩條路子 一是使用現成的eai etl框架,定義一堆xml格式的對映檔案,再寫一些特殊轉換的transform class。但這樣的工程通常比較巨集大,用到最後經常會發覺還不如自己寫程式快。二是直接自己寫程式用jdbc sql轉換,快則快矣,但經常會寫的比較亂 特別是...

DBUnit在應用間匯出匯入資料

應用間的資料整合 eai 通常是兩條路子 一是使用現成的eai etl框架,定義一堆xml格式的對映檔案,再寫一些特殊轉換的transform class。但這樣的工程通常比較巨集大,用到最後經常會發覺還不如自己寫程式快。二是直接自己寫程式用jdbc sql轉換,快則快矣,但經常會寫的比較亂 特別是...