首页 > java > DbUnit数据备份、还原

DbUnit数据备份、还原

2007年7月26日 发表评论 阅读评论
(一)  备份代码,以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);
 
(三)  遇到问题;
1Oralce数据中产生AmbiguousTableNameException的错误:
原因主要是dbunit中使用了schema,因此必须指定schema;数据库schema,相当于方案,每个数据库实例,里面可能会有多个用户,每个用户可能都有自己的表,过程等object,那oracle就会为每个用户创建一个与用户名相同的方案,就相当于schema
  值得注意的是,schema要求一定要大写的,否则会产生NoSuchTableException
2、如何提高dbunit的导入导出性能? 使用dnunit的需要注意一些和性能相关的配置。
1.
使用streamed的导入导出减少内存消耗,使用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的批处理语句功能
分类: java 标签: 2,763 次阅读
原文链接:http://www.wenhq.com/article/view_98.html
欢迎转载,请注明出处:亲亲宝宝
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.