2013-01-16 7 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")); –