DBUnit在应用间导出导入数据
2008-02-23 10:12:36来源:互联网 阅读 ()
一是使用现成的EAI、ETL框架,定义一堆XML格式的映射文件,再写一些特殊转换的transform class,但这样的工程通常比较宏大散乱,用到最后经常会发觉还不如自己写程序快。
二是直接自己写程序用JDBC->SQL转换,快则快矣,但经常会写的比较乱、特别是列数多的时候。
所以,我又会用万能老倌DBUnit Dom4j,自己写程序来导出导入。
DBUnit因为具有xml<-->database的功能,所以很多地方都能够担任。用XML来写EAI,比SQL语句清晰,而且效果和写映射文件差不多,但因为都写在程序里,不用映射文件、提取数据定义文件、转换类翻来覆去四处看。
另外,它本身带了REFRESH(如果不存在就插入,否则就更新,以主键为依据), CLEAN_INSERT(全部删除再插入,和ReFresh比,会把不在XML中的数据删除)等几种操作,又简省了编程的功夫。
例子代码:
//Dom4j创建Document并向其赋值
Document document = DocumentHelper.createDocument();
document.addElement("dataset");
Element root = document.getRootElement();
while(rs.next())
{
item.attribute("bs").setValue(rs.getString("orderItemNo"));
root.add(item.createCopy());
}//把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。
上一篇: JBoss4.0数据源配置大全
下一篇: 一个简单的JAVA XML解析器
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:第二章 统一建模语言UML简介
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash