2011-12-15 15 views
-1

XMLをデータベースに解析する最も効果的な方法について考えていますか?XML解析:XMLデータをデータベースに挿入する:パフォーマンス

「最速の方法」。

XMLを読み、いくつかのチェックを行い、その結果をデータベースに挿入します。

ありがとうございました。

+0

最もパフォーマンスの方法がありますXMLデータストアを使用し、解析を行わない。それが受け入れられない場合は、理由を教えてください。 –

+0

@med_alpa:Welcome to Stackoverflow。 [FAQ](http://stackoverflow.com/faq)のすべてのセクションを注意深く読んでください。あなたはバッジを獲得し、Stackoverflowの経験を向上させます。 – menjaraz

答えて

0

主な質問は

あなたはそれをプログラム的に、またはすでに作られたアプリケーションで行うことにしますかありますか?

プログラムにより

これはXMLが書かれている方法によって異なります。タグ/プロパティ名がデータベーステーブル/列と一致する場合は、それを簡単に書くことができます。そうでない場合は、xmlタグ/プロパティ名を最初にマップしてデータベース構造と一致させる必要があります。

正解のためには、あなたが書いている現在の言語を知る必要があります。

アプリケーション

一例:検討すべき http://www.altova.com/databasespy/database-import-export.html

+0

OKありがとう、:私はそれをプログラム的にしたい。使用される言語はJavaです。ほとんどの場合、XMLファイルはテーブルの列と一致します。 xmlにはテーブルよりも多くのフィールドが含まれています。 –

0

2つのこと:

  1. ウォークスルーではない、あなたがそのようなSAXまたはStAXにとして、ストリーミングAPIを使用してXMLを解析していることを確認しますDOM APIを使用します。
  2. 準備文を使用して、挿入物を1000個の挿入物のバッチでバッチします。

Javaでは、StaxMateを使用すると、StAXの上に小さなレイヤーを表示できます。そして、内側のループでチェックし、挿入を実行します。

のようなループの外で使用しているデータベースのINSERT文を準備します

Connection conn = ... 
    PreparedStatement ps = conn.prepareStatement("INSERT INTO ... (...) VALUES (?, ?,...)"); 
    static int i=0; 

、内側のループで:

ps.setInt(1, a); 
ps.setString(2, b); 
... 
ps.addBatch(); 
if(++i % 1000==0) ps.executeBatch()