导入/导出dbunit的xml

blu*_*123 11 xml dbunit export dataset

我们如何轻松导入/导出dbunit可以采用以下格式的数据库数据?

<dataset>
   <tablea cola="" colb="" />
   <tableb colc="" cold="" />
</dataset>
Run Code Online (Sandbox Code Playgroud)

我想找到一种方法从数据库中导出现有数据以进行单元测试.

Mar*_*son 15

蓝色,这将允许您以您想要的格式导出数据.

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"));
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @ blue123,该片段来自FAQ,其中包含您可能会觉得有用的其他信息:http://www.dbunit.org/faq.html#extract (2认同)

Lok*_*esh 6

出口已经得到解答.要完成答案,可以使用以下方法数据集导入数据库. connection是类型的IDatabaseConnection.Mark Robinson先前的回答(出口)包含如何创建数据库连接的代码.

FlatXmlDataSet dataSet = new FlatXmlDataSet(new FlatXmlProducer(new InputSource(new FileInputStream("dataset.xml"))));
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
Run Code Online (Sandbox Code Playgroud)

  • 第一行可以是简单的`FlatXmlDataSet dataSet = new FlatXmlDataSet(new File("dataset.xml"),true);`或`FlatXmlDataSet dataSet = new FlatXmlDataSetBuilder().build(new File("dataset.xml")); ` (2认同)