8

いくつかの統計を実行する必要がある研究プロジェクトのデータを含むXMLファイルがいくつかあります。データ量は100GBに近いです。

構造はそれほど複雑ではなく(リレーショナルモデルではおそらく10個のテーブルにマップできます)、問題の性質を考えると、このデータは二度と更新されません。クエリを実行しやすい場所でのみ利用可能である必要があります。の上。

XMLデータベースと、その上でXPATHスタイルのクエリを実行する可能性について読んだことがありますが、それらを使用したことはなく、あまり慣れていません。リレーショナルデータベースにデータを保存するのが私の好みです。

そのため、XMLに格納されているデータをリレーショナルデータベースに変換する方法を探しています(によって生成されたものと同様の大きな.sqlファイルをmysqldump考えてみてください。最終的な目標は、データを処理するためのSQLクエリを実行できるようにすることです。

いくつかの調査の後、私は自分でそれを書かなければならないとほとんど確信しています。しかし、これは一般的な問題だと思います。したがって、すでにそれを実行しているツールが必要です。

では、XMLデータをリレーショナルデータベースに変換するツールを知っていますか?

PS1:

私のアイデアは次のようになります(動作は異なりますが、私の主張を確実に理解するためです)。

  1. データ構造を分析します(XML自体またはXSDに基づいて)
  2. その構造に基づいてリレーショナルデータベース(テーブル、キー)を構築します
  3. SQLステートメントを生成してデータベースを作成します
  4. SQLステートメントを生成してデータの入力を作成します

PS2:

私はここSOでいくつかの 投稿を見ましたが、それでも解決策を見つけることができませんでした。Microsoftの「XmlBulkLoad」ツールはその方向に何かをしているようですが、私はMSSQLServerを持っていません。

4

5 に答える 5

4

データベースは、データを検索する唯一の方法ではありません。Apache Solrを強くお勧めします

生データを XML として保持し、Solr インデックスを使用して検索します

于 2012-11-30T11:51:47.930 に答える
3

適切な形式のXMLファイルをMySqlデータベースにインポートするのは簡単です。

https://dev.mysql.com/doc/refman/5.6/en/load-xml.html

つまり、通常、XMLデータをそのような形式に変換する必要があります。これをどのように行うかは、変換の複雑さ、知っているプログラミング言語、およびXSLTを使用するかどうかによって異なります(これはおそらく良い考えです)。

以前の回答から、Pythonを知っているように思われるので、 http: //xmlsoft.org/XSLT/python.htmlから始めるのが正しいかもしれません。

于 2012-11-30T12:03:12.977 に答える
2

データの分析/抽出には、XSD の代わりに StAX を検討してください。ストリーム ベースであり、巨大な XML ファイルを処理できます。

于 2012-11-30T12:47:47.187 に答える
1

商用製品に慣れている場合は、 SQLMaestroGroupによるMySQLのデータウィザードをご覧ください。

このアプリケーションは、特にMySQLデータベースとの間でデータをエクスポートおよびインポートすることを目的としています。これには、XMLインポートも含まれます。30日間の試用版をダウンロードして、これが探しているものであるかどうかを確認できます。

私はまだ彼らのMySQL製品ラインを使用していなかったことを認めなければなりませんが、FirebirdMaestroおよびSQLiteMaestro製品で優れたユーザーエクスペリエンスを提供しました。

于 2012-11-30T11:48:07.830 に答える
1

あなたが Perl に慣れているなら、私は非常にXML::Twig大きな XML ファイルを処理するためのモジュールでかなり幸運に恵まれました。

基本的に必要なのは、いくつかの twig ハンドラーをセットアップし、DBI/を使用してデータを MySQL にインポートすることだけDBD::mysqlです。

xmltwig.orgにかなり良い例があります。

于 2012-11-30T11:35:26.650 に答える