• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何使用DBUnit做数据备份恢复

发布: 2009-3-30 11:33 | 作者: 网络转载 | 来源: 测试时代采编 | 查看: 237次 | 进入软件测试论坛讨论

领测软件测试网 DBUnit 做数据备份恢复工具

DBunit(http://dbunit.sourceforge.net/ )是一个非常好的数据库unit系列工具.
一般都是用它在测试的时候管理数据库。我们可以发挥一下,用它做一个备份和恢复的数据库管理工具。

mysql
为例,正好现在还没有找一个好用的mysql备份和恢复工具。这个是在代码中管理不是用ant的方式。

主要是用到核心组件:IDatabaseConnection、IDataSet、DatabaseOperation 。

先看代码:
   /**
     * 导出数据到指定文件
     * @param file 一个标准的java.io.File
     * @param connection  一个标准的java.sql.Connection
     * @throws org.dbunit.DatabaseUnitException
     */
    public static void exportRoom(File file, Connection connection) throws DatabaseUnitException, IOException {
        IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
        QueryDataSet dataSet = new QueryDataSet(databaseConnection);
        dataSet.addTable("room");
        Writer writer = new FileWriter(file);
        XmlDataSetWriter w = new XmlDataSetWriter(writer);
        w.write(dataSet);
        writer.flush();
        writer.close();
    }
在这个方法中指定了一个表名"room",如果有多个表可以通过参数或其他的方式按照这种方式继续增加。这个文件是XML格式的。具体格式说明或其他格式参见http://dbunit.sourceforge.net/components.html#databaseconnection

    /**
     * 导入数据到ROOM表
     * @param file  一个标准的java.io.File
     * @param connection 一个标准的java.sql.Connection
     */
    public static void importRoom(File file, Connection connection) throws DatabaseUnitException, IOException, SQLException {
        IDataSetProducer dataSetProducer = new XmlProducer(FileHelper.createInputSource(file));
        IDataSet dataSet = new CachedDataSet(dataSetProducer);
        IDatabaseConnection databaseConnection = new DatabaseConnection(connection);
        DatabaseOperation operation = DatabaseOperation.CLEAN_INSERT;
        DatabaseOperation.TRANSACTION(operation);
        operation.execute(databaseConnection, dataSet);
        DatabaseOperation.CLOSE_CONNECTION(operation);
    }
这个方法可以把上面生成的XML文件导入到数据库中,如果是其他格式的文件只需要更换IDataSetProducer的实现类就可以了。具体格式请参见APIDOC
在这个方法里使用了事务控制,保证数据的一致性。

有了这两个方法我们就可以再发挥一下,然后为客户提供一个备份恢复数据的工具了。如果再加入压缩文件的支持就更加完美了。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

TAG: dbunit DbUnit DBUnit


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网