DbUnit数据备份、还原

(一)  备份代码,以 DbUnit2.2 版本为例;
// 获的 connection 的一个数据库连接
      Connection jdbcConnection = WebDb.getConnect();
      //oracle 中必须指定 Schema ,见参数“ ZFCG
      IDatabaseConnection connection =
      new DatabaseConnection(jdbcConnection, "ZFCG" );
      String datafile = "d://testdata//TableTestData.xml" ;
      String[] tableNames = { "role_group" };
      IDataSet actualDataSet = connection.createDataSet(tableNames);
      FlatXmlDataSet.write(actualDataSet, new FileOutputStream(datafile));
 
(二)  还原代码
      Connection jdbcConnection = WebDb.getConnect();
      IDatabaseConnection connection =
      new DatabaseConnection(jdbcConnection, "ZFCG" );
      String datafile = "d://testdata//TableTestData.xml" ;
      IDataSet expectedDataSet = new FlatXmlDataSet( new FileInputStream(datafile));
      DatabaseOperation. CLEAN_INSERT .execute(connection,expectedDataSet);
 
(三)  遇到问题 ;
1 Oralce 数据中产生 AmbiguousTableNameException 的错误:
原因主要是 dbunit 中使用了 schema ,因此必须指定 schema ;数据库 schema ,相当于方案,每个数据库实例,里面可能会有多个用户,每个用户可能都有自己的表,过程等 object ,那 oracle 就会为每个用户创建一个与用户名相同的方案,就相当于 schema
  值得注意的是, schema 要求一定要大写的,否则会产生 NoSuchTableException
2 、如何提高 dbunit 的导入导出性能? 使用 dnunit 的需要注意一些和性能相关的配置。
1.
使用 streame 的导入导出减少内存消耗,使用 StreamingDataSet 读取 dataset ,处理数据导入。导出时使用配置 DbUnit 的连接使用 ForwardOnlyResultSetTable 导出数据
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection, schema);
DatabaseConfig config = connection.getConfig();
config.setProperty(DatabaseConfig.PROPERTY_RESULTSET_TABLE_FACTORY, new ForwardOnlyResultSetTableFactory());
2.
明确指定导入导出的 schema
3.
如果 jdbc 支持批处理,请使用 dbunit 的批处理语句功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值