AWS RDS上のOracle XML DBに複数のxmlデータを投入する

| コメントをどうぞ

前記事 AWS RDS上のOracle XML DBにxmlデータを投入し、参照する の投入のサンプルアプリを改造し、複数のxmlデータを投入するツールを作成した。これでxmlデータを投入し、後日クエリーの検証を行います。

準備

必要なライブラリの入手方法は 最新のxmlparserv2.jarが見つからない! を参照してください。
ojdbc6.jar、xdb6.jar、xmlparserv2.jarをCLASSPATHに入れます。

マルチ投入のサンプルアプリ

カレントディレクトリ/xmlディレクトリに存在するファイルを順番にINSERTしていきます。

import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import oracle.jdbc.OraclePreparedStatement;
import oracle.xdb.XMLType;

import org.w3c.dom.Document;

public class FileInsert {
    static String url = "jdbc:oracle:thin:@oracle-test.xxx.ap-northeast-1.rds.amazonaws.com:1521:orcl";
    static String uid = "scott";
    static String pwd = "tiger";
    static String sql = "INSERT INTO PO_SL_BIX_TABLE VALUES (?)";
    public static void main(String[] args) throws Exception {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Class.forName("oracle.jdbc.driver.OracleDriver");
        Connection conn = DriverManager.getConnection(url, uid, pwd);
        File dir = new File("xml");
        for (File file : dir.listFiles()) {
            if (!file.isFile()) continue;
            Document doc = builder.parse(file);
            XMLType xmltype = XMLType.createXML(conn, doc);
            OraclePreparedStatement sqlStatement = (OraclePreparedStatement)conn.prepareStatement(sql);
            sqlStatement.setObject(1, xmltype);
            sqlStatement.execute();
            System.out.println("Success! " + file.getName());
            sqlStatement.close();
        }
        conn.close();
    }
}

サンプルxmlデータ

Oracle XML DB Sample Code のXFiles version 5 をダウンロードします。
XFILES.5.zipを解凍し、XFILES.5/sampleData/XML/PurchaseOrders ディレクトリに8つのxmlデータがあるので、これをxmlディレクトリにコピーします。
しかしこのままではxml validationに失敗します。
1つ目のABANDA-2007040105174348PDT.xmlをエディタで開き、xsiのネームスペース定義を追記します。他のファイルにはネームスペース定義が記述されています。

<PurchaseOrder DateCreated="2007-04-01T12:17:43.48000Z">
↓
<PurchaseOrder DateCreated="2007-04-01T12:17:43.48000Z" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmldb.example.com:8080/home/SCOTT/xsd/purchaseOrder.xsd">

上記のFileInsertを実行すると、8つのxmlデータが投入されます。

Success! ABANDA-2007040105174348PDT.xml
Success! ABANDA-2007040105264865PDT.xml
Success! ABANDA-2007040205181412PDT.xml
Success! ABANDA-2007040400350593PDT.xml
Success! ABANDA-2007041106302127PDT.xml
Success! ABANDA-2007041402364776PDT.xml
Success! ABANDA-2007041405283313PDT.xml
Success! ABANDA-2007041704324786PDT.xml

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>