2013-01-16 97 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,該摘錄來自常見問題解答,其中包含其他信息,您可能會發現它們很有用:http://www.dbunit.org/faq.html#extract – Paul

+0

此複製粘貼的摘錄中包含的錯誤與FAQ – naXa

+0

上面的URL已損壞。使用這一個:http://dbunit.sourceforge.net/faq.html#extract –

6

導出已經回答。 要完成答案,您可以將導入將數據集導入數據庫。 connection類型爲IDatabaseConnection。 馬克羅賓遜先前的答案(出口)包含如何創建數據庫連接的代碼。

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

第一行可以簡單地爲'FlatXmlDataSet dataSet = new FlatXmlDataSet(new File(「dataset.xml」),true);''或'FlatXmlDataSet dataSet = new FlatXmlDataSetBuilder()。build(new File(「dataset.xml」));' –