【问题标题】:JSON to CSV SchemaJSON 到 CSV 架构
【发布时间】:2011-09-21 07:28:15
【问题描述】:

我有一些银行账户信息的 JSON 数据结构,我将它们导出为 CSV 文件,以便在 Microsoft Excel 中打开。每个帐户的 JSON 是:

{
  "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"
}

对于任何给定的银行,特征字典可以是具有各种特征的任意长度。我主要有面向文档的数据库 (MongoDB) 方面的经验。

我应该如何为相同的数据构建关系模式?

【问题讨论】:

  • 您是在谈论创建 CSV 格式吗?或者您是否希望创建一个关系数据库模式来存储信息(在数据库中/不是 CSV)? CSV 只是一个平面文件,与关系数据概念无关。
  • 是的,它最终会出现在关系数据库中(我对此几乎没有经验)

标签: json csv schema


【解决方案1】:

这里的 CSV 和关系结构不匹配。 CSV 可以有任意数量的字段,每个特征作为单独的列。在关系数据库中,您会以不同的方式执行此操作。我建议一张表用于基本数据,一张用于功能。像这样的:

表 BANK_ACCOUNT_INFO:

  • 身份证
  • apy
  • product_type
  • min_investment
  • max_investment
  • 机构类型
  • 机构编号
  • 机构

表 BANK_ACCOUNT_FEATURES:

  • 身份证
  • BANK_ACCOUNT_ID
  • FEATURE_NAME
  • FEATURE_VALUE

基本表中的1条记录可以与特征表中的多条记录相关联。

【讨论】:

  • 我觉得现在更有意义了!
【解决方案2】:

这是使用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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-05
    • 2020-03-22
    • 1970-01-01
    • 2021-11-18
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多