DBUnit을 사용하여 AS400에서 데이터를 내보내고 JUnit 테스트를 위해 HSQLDB 데이터베이스로 가져 오려고하지만 데이터 유형 정보가 내보내기/가져 오기되지 않는 것 같습니다. 모든 것이 CDATA로 수출 (따라서 수입 될 것)되는 것 같습니다. 누군가이 답변을 찾을 수있는 곳을 말해 줄 수 있습니까?DBUnit에서 데이터 형식 내보내기/가져 오기?
내가 성공적으로 구축했습니다과 예제 중 하나를 실행하여이 예를 들어, 저를 제공
public static void main(String[] args) throws Exception
{
// database connection
Class driverClass = Class.forName("com.ibm.as400.access.AS400JDBCDriver");
Connection jdbcConnection = DriverManager.getConnection("jdbc:as400://myserver;libraries=MYLIB", "user", "password");
IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
// partial database export
QueryDataSet partialDataSet = new QueryDataSet(connection);
partialDataSet.addTable("TABLE1");
partialDataSet.addTable("TABLE2");
FlatXmlDataSet.write(partialDataSet, new FileOutputStream("flatpartial_as400.xml"));
FlatDtdDataSet.write(connection.createDataSet(), new FileOutputStream("flatdtd_as400.dtd"));
XmlDataSet.write(partialDataSet, new FileOutputStream("partial_as400.xml"));
을, 다음과 같은 출력 : 여기에
<?xml version='1.0' encoding='UTF-8'?>
<dataset>
<TABLE1/>
<TABLE2 ADDRESS_ID="1" ADDRESS_TYPE="1" ADDRESS_DESCRIPTION="Billing Address "/>
<TABLE2 ADDRESS_ID="2" ADDRESS_TYPE="2" ADDRESS_DESCRIPTION="Delivery Address "/>
<TABLE2 ADDRESS_ID="3" ADDRESS_TYPE="3" ADDRESS_DESCRIPTION="Owner Address "/>
<TABLE2 ADDRESS_ID="4" ADDRESS_TYPE="4" ADDRESS_DESCRIPTION="Owner Previous Address "/>
<TABLE2 ADDRESS_ID="5" ADDRESS_TYPE="5" ADDRESS_DESCRIPTION="Store Address "/>
</dataset>
가 생성되는 DTD 조각입니다 :
<!ELEMENT TABLE2 EMPTY>
<!ATTLIST TABLE2
ADDRESS_ID CDATA #REQUIRED
ADDRESS_TYPE CDATA #REQUIRED
ADDRES_DESCRIPTION CDATA #REQUIRED
>
첫 번째 필드는 DECIMAL (10,0)를해야하지만 CDATA입니다. 분명히 이것은 데이터 무결성 관점에서 문제가 될 것입니다. 디버거에서 형식 정보가 DBUnit 패키지에 있음을 알 수 있습니다. ADDRESS_ID 필드는 코드 안에 DECIMAL입니다. 그러나이 정보는 파일의 XML DTD에 들어 있지 않습니다. 가져올 테이블에 대한 Generete의 DTD 파일이
private static void generateDTD(String fileName,IDatabaseConnection connection,
String[] tablesToExport) throws IOException, DataSetException,
SQLException, FileNotFoundException {
FlatDtdDataSet.write(connection.createDataSet(tablesToExport), new FileOutputStream(fileName));
}
다음 빌더에서이 설정
FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();
builder.setMetaDataSetFromDtd(new FileInputStream(schemaFile));
어떻게 : –