为 dbunit 导入/导出 xml
Posted
技术标签:
【中文标题】为 dbunit 导入/导出 xml【英文标题】:import/export xml for dbunit 【发布时间】:2012-12-30 15:04:10 【问题描述】:我们如何轻松导入/导出dbunit可以采用以下格式的数据库数据?
<dataset>
<tablea cola="" colb="" />
<tableb colc="" cold="" />
</dataset>
我想找到一种方法从数据库中导出现有数据以进行单元测试。
【问题讨论】:
到目前为止你尝试过什么?您是否阅读过 dbunit.org 上的文档? 我手动执行或使用 postgresql 客户端。只是想知道有没有更好的方法。 @MarkRobinson 【参考方案1】:Blue,这可以让您以所需的格式导出数据。
public class DatabaseExportSample
public static void main(String[] args) throws Exception
// database connection
Class driverClass = Class.forName("org.hsqldb.jdbcDriver");
Connection jdbcConnection = DriverManager.getConnection(
"jdbc:hsqldb:sample", "sa", "");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("FOO", "SELECT * FROM TABLE WHERE COL='VALUE'");
partialDataSet.addTable("BAR");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream("partial.xml"));
// full database export
IDataSet fullDataSet = connection.createDataSet();
FlatXmlDataSet.write(fullDataSet, new FileOutputStream("full.xml"));
// dependent tables database export: export table X and all tables that
// have a PK which is a FK on X, in the right order for insertion
String[] depTableNames =
TablesDependencyHelper.getAllDependentTables( connection, "X" );
IDataSet depDataSet = connection.createDataSet( depTableNames );
FlatXmlDataSet.write(depDataSet, new FileOutputStream("dependents.xml"));
【讨论】:
@blue123,该 sn-p 来自常见问题解答,其中包含您可能会发现有用的其他信息:dbunit.org/faq.html#extract 此复制粘贴的 sn-p 包含与常见问题解答中相同的错误 以上网址已损坏。使用这个:dbunit.sourceforge.net/faq.html#extract【参考方案2】:导出已回答。
为了完成答案,您可以将数据集导入到数据库中。
connection
的类型为 IDatabaseConnection
。
Mark Robinson 的上一个答案(导出)包含如何创建数据库连接的代码。
FlatXmlDataSet dataSet = new FlatXmlDataSet(new FlatXmlProducer(new InputSource(new FileInputStream("dataset.xml"))));
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
【讨论】:
第一行可以简单的FlatXmlDataSet dataSet = new FlatXmlDataSet(new File("dataset.xml"), true);
或者FlatXmlDataSet dataSet = new FlatXmlDataSetBuilder().build(new File("dataset.xml"));
以上是关于为 dbunit 导入/导出 xml的主要内容,如果未能解决你的问题,请参考以下文章
有没有js脚本或jquery插件实现html表格导出导入excel文件,html表格导出导入xml文件
使用RSACryptoServiceProvider从XML导入RSA公钥会将属性PublicOnly设置为false