2013-01-16 6 views
9

dbunitが次の形式で取り込めるデータベースデータを簡単にインポート/エクスポートできますか?dbunitのインポート/エクスポートxml

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

単体テスト用のデータベースから既存のデータをエクスポートする方法を知りたいと思います。

+0

これまでに何を試しましたか? dbunit.orgの文書を読んだことがありますか? –

+0

私はそれを手動で行うか、postgresqlクライアントを使用します。より良い方法があるかどうか疑問に思うだけです。 @MarkRobinson – blue123

答えて

14

青、これにより、必要な形式でデータを書き出すことができます。

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")); 
    } 
} 
+2

@ blue123のように、そのスニペットはFAQのもので、他にも役立つ情報があります。http://www.dbunit.org/faq.html#extract – Paul

+0

このコピー貼り付けスニペットには、 FAQ – naXa

+0

上記のURLが壊れています。これを使う:http://dbunit.sourceforge.net/faq.html#extract –

6

エクスポートは既に回答済みです。 答えを完了するには、データベースにデータセットをインポートする方法があります。 connectionIDatabaseConnectionです。 Mark Robinsonによる(エクスポートの)以前の回答には、データベース接続の作成方法のコードが含まれています。

FlatXmlDataSet dataSet = new FlatXmlDataSet(new FlatXmlProducer(new InputSource(new FileInputStream("dataset.xml")))); 
DatabaseOperation.CLEAN_INSERT.execute(connection, dataSet); 
+2

最初の行は単純に 'FlatXmlDataSet dataSet = new FlatXmlDataSet(新しいファイル(" dataset.xml ")、true);または' FlatXmlDataSet dataSet = new FlatXmlDataSetBuilder()。build(新しいファイル( "dataset.xml")); ' –

関連する問題