AMcoder - javascript, python, java, html, php, sql

Արտահանե՞լ/ներմուծե՞լ տվյալների տեսակները DBUnit-ում:

Ես փորձում եմ օգտագործել DBUnit-ը մեր AS400-ից տվյալներ արտահանելու և այն ներմուծելու HSQLDB տվյալների բազա՝ JUnit-ի փորձարկման համար, սակայն տվյալների տիպի տեղեկատվությունը կարծես արտահանված/ներմուծված չէ: Ամեն ինչ կարծես արտահանվում է (հետևաբար կներմուծվի) որպես CDATA: Ինչ-որ մեկը կարո՞ղ է ինձ ասել, թե որտեղից գտնել սրա պատասխանը:

Ես հաջողությամբ կառուցեցի և գործարկեցի օրինակներից մեկը.

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 դաշտը կոդի ներսում տասնորդական է): Բայց այդ տեղեկատվությունը չի մտնում այն ​​ֆայլի XML DTD-ում:

Ցանկացած օգնություն գնահատելի է...


Պատասխանները:


1

Միգուցե դա կօգնի. Ստեղծեք dtd ֆայլ աղյուսակների համար, որոնք ցանկանում եք ներմուծել

private static void generateDTD(String fileName,IDatabaseConnection connection,
        String[] tablesToExport) throws IOException, DataSetException,
        SQLException, FileNotFoundException {
    FlatDtdDataSet.write(connection.createDataSet(tablesToExport), new FileOutputStream(fileName));
}

ապա սահմանեք սա Builder-ում

FlatXmlDataSetBuilder builder = new FlatXmlDataSetBuilder();
        builder.setMetaDataSetFromDtd(new FileInputStream(schemaFile));
31.07.2013
  • Ինչպե՞ս եք օգտագործում շինարարը՝ որևէ բան գրելու համար: 27.06.2014
  • Նոր նյութեր

    Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
    JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
    Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

    Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
    Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

    Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
    Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

    Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
    Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

    C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
    C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

    Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
    Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..