應用間的資料整合(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轉換,快則快矣,但經常會寫的比較亂 特別是...