Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

import/export xml for dbunit

How can we easily import/export database data which dbunit could take in the following format?

<dataset>
   <tablea cola="" colb="" />
   <tableb colc="" cold="" />
</dataset>

I'd like to find a way to export the existing data from database for my unit test.

like image 835
blue123 Avatar asked Jan 16 '13 10:01

blue123


2 Answers

Blue, this will let you export your data in the format you wanted.

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"));
    }
}
like image 120
Mark Robinson Avatar answered Nov 01 '22 03:11

Mark Robinson


Exporting is already answered. To complete the answer, this is how you can import your dataset into database. connection is of type IDatabaseConnection. The previous answer (of exporting) by Mark Robinson, contains the code of how to create a database connection.

FlatXmlDataSet dataSet = new FlatXmlDataSet(new FlatXmlProducer(new InputSource(new FileInputStream("dataset.xml"))));
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet);
like image 44
Lokesh Avatar answered Nov 01 '22 03:11

Lokesh