2011-06-23 14 views
2

私は、Microsoft Excelで開くためにCSVファイルとしてエクスポートする銀行口座情報のJSONデータ構造をいくつか持っています。各アカウントのJSONは次のとおりです。JSONからCSVへのスキーマ

{ 
    "apy": 2.0, 
    "product_type": "Investors Checking", 
    "features": { 
    "ATM_FEES": "Refunded", 
    "ATM_CARD_AVAILABLE": "Yes", 
    "SIMPLY_MAINTAIN_A_MONTHLY_BALANCE_OF": "$10,000" 
    }, 
    "min_investment": "", 
    "max_investment": 20000, 
    "institution_type": "Credit Union", 
    "institution_num": 11307, 
    "institution": "Apple Federal Credit Union" 
} 

私は「機能」辞書以外のすべての列と罰金、それをエクスポートすることができます。これは、オブジェクトを含む列として終わります。

{ 
    "ATM_FEES": "Refunded", 
    "ATM_CARD_AVAILABLE": "Yes", 
    "SIMPLY_MAINTAIN_A_MONTHLY_BALANCE_OF": "$10,000" 
} 

任意のバンクについて、フィーチャーdictはさまざまな機能を持つ任意の長さにすることができます。私はたいていドキュメント指向データベース(MongoDB)の経験があります。

同じデータに対してどのようにリレーショナルスキーマを構築する必要がありますか?

+0

、作成について話しているが生成されますですCSV形式?または(CSVではなく)データベースに情報を格納するリレーショナルDBスキーマを作成しようとしていますか? CSVは単なるフラットファイルであり、リレーショナルデータの概念は関係ありません。 – Colin

+0

はい、それは最終的に関係データベース(私は少し経験がある)に終わることになるだろう – ciferkey

答えて

3

ここで、CSVとリレーショナル構造は一致しません。 CSVは、各フィーチャを別々の列として任意の数のフィールドを持つことができます。リレーションデータベースでは、これを別の方法で行います。私は、基本的なデータのためのテーブルとその特徴のためのテーブルを提案します。このような何か:

テーブルBANK_ACCOUNT_INFO:

  • ID
  • APY
  • PRODUCT_TYPE
  • min_investment
  • max_investment
  • institution_type
  • institution_num
  • 機関

テーブルBANK_ACCOUNT_FEATURES:

  • ID
  • BANK_ACCOUNT_ID
  • 基本テーブルでFEATURE_NAME
  • FEATURE_VALUE

1レコードがでいくつかのレコードに関連することができます機能テーブル。ここで

+0

私はそれが今より多くの感覚を作ることがわかります! – ciferkey

0

jq

def headers: 
    keys_unsorted[] as $k 
    | if .[$k]|type == "object" then (.[$k]|headers) 
    else $k 
    end 
; 

def data: 
    keys_unsorted[] as $k 
    | if .[$k]|type == "object" then (.[$k]|data) 
    else .[$k] 
    end 
; 

    (.[0] | [headers]) 
, (.[] | [data]) 
| @csv 

を使用したソリューションは、filter.jqは、このフィルタが含まれており、data.jsonはサンプルデータが含まれている場合は、

$ jq -Mrs -f filter.jq data.json 

"apy","product_type","ATM_FEES","ATM_CARD_AVAILABLE","SIMPLY_MAINTAIN_A_MONTHLY_BALANCE_OF","min_investment","max_investment","institution_type","institution_num","institution" 
2,"Investors Checking","Refunded","Yes","$10,000","",20000,"Credit Union",11307,"Apple Federal Credit Union" 
関連する問題