2013-05-06 24 views
7

これはStackOverflowにとって広すぎるかもしれませんが、リレーショナルテーブルのデータを階層JSONにアセンブルする一般的な方法はありますか?リレーショナルデータベースからJSONを抽出する一般的な方法は?

たとえば、「customers」テーブルと「orders」テーブルがあるとします。私は、出力は次のようになりたい:

{ 
    "customers": [ 
     { 
      "customerId": 123, 
      "name": "Bob", 
      "orders": [ 
       { 
        "orderId": 456, 
        "product": "chair", 
        "price": 100 
       }, 
       { 
        "orderId": 789, 
        "product": "desk", 
        "price": 200 
       } 
      ] 
     }, 
     { 
      "customerId": 999, 
      "name": "Fred", 
      "orders": [] 
     } 
    ] 
}  

私はむしろメインテーブルをループする手続き型コードの多くを書いて、一度に注文を数を取得し、それらを添付する必要はありませんと思います。それは痛いほど遅くなるでしょう。

私が使用しているデータベースはMS SQL Serverですが、すぐに同じことをする必要があります。私はアクセスのためにJavaとJDBCを使用しています。これらのデータベースのいずれかがサーバー側でこれらのレコードを組み立てる魔法のような方法を持っていれば理想的でしょう。

人はどのようにリレーショナルデータベースからMongoDBのようなJSONデータベースに移行しますか?

+0

ハハ。ハハ。 Haaahaha ..良いこと:D SQL ServerはXML出力*(ベンダーの機能として)のようなクエリ*を実行できますが、SQL *ではこのタスクの標準的な規定はありません。適切なORM /マッパーを使用すると、*クライアント*(おそらくWebサービス?)の変換がより簡単になります。 (私はこのプロセスがC#/ LINQでは「比較的痛みはない」と思っていますが、このマッピングのために特別に設計されたツールがあります) – user2246674

+0

あなたはドキュメントコレクションを意味します。 – Drew

+1

単にcsvまたはjsonにemをダンプしてmongoimportを使用する – Drew

答えて

-1

SQL Serverはそのデータ型としてJSONをサポートしていないため、一般化された方法はありません。あなたはこれのために独自の「一般化された方法」を作らなければならないでしょう。

この記事をチェックしてください。 SQL ServerのデータをJSON形式に変換する方法の良い例があります。ここで

https://www.simple-talk.com/blogs/2013/03/26/sql-server-json-to-table-and-table-to-json/

+0

一般的な方法でSQL ServerのJSON(およびXMLおよびリレーショナル)データを管理する優れた方法は次のとおりです。https://www.simple-talk.com/sql/ t-sql-programming/consuming-json-strings-in-sql-server/ – rainabba

0

私は次のように1「一般化」ソリューションはなると思う: -

  1. 2次元配列(CSV /一時テーブルのようななど)で結果を取得するために必要なすべてのテーブルを結合します「選択」クエリを作成します
  2. この結合の各行が一意で、MongoDBスキーマと列が1対1のマッピングを持つ場合、MongoImportコマンドを使用してこのCSV /表を必要なパラメータとともにインポートします。
  3. ただし、与えられた顧客IDがの配列「orders」を持つことができる場合は、mongoImportよりも前に計算が必要です。
    与えられた顧客IDの注文を「垂直マージ」できるプログラムを作成する必要があります。小さなデータセットの場合、単純なJavaプログラムが動作します。しかし、より大きなセットでは、sparkを使った並列プログラミングがこの仕事をすることができます。
関連する問題