【问题标题】:Storing JSON as key value pair将 JSON 存储为键值对
【发布时间】:2016-05-10 05:02:42
【问题描述】:

我的问题是如何将嵌套的 JSON 作为键值存储在 mysql 表中。早些时候我曾考虑将其存储为 CSV,但在深入研究时,我发现它很难查询这些值并进行管理。 请帮助我提供有关如何以及在何处存储 JSON 的替代解决方案。

我使用的 MySQL 版本不支持 JSON 数据类型

【问题讨论】:

  • 请分享一些示例 json 以及一些预期行为
  • @Rits 也许您可以将其存储为文本,因为......这就是它的设计方式
  • 例如:{"id":"1","name":"Peter","mobno":"+91 4567","parentinfo":{"Mname":"Alexia" ,"FName":"Mary","FOccptn":"Buisnessman","mno":"+91 567876789"},"city":"CA"} 我的疑问是如何将 parentinfo 值存储在 mysql 数据库中。我们可以在mysql中做还是我们需要更改数据库?
  • 执行此操作的传统方法是从 JSON 中创建对象,并将每个对象作为行单独存储在自己的表中,并创建外键来关联它们。将对象序列化/反序列化为 JSON 应该相对容易
  • 有很多方法,但我认为您正在处理糟糕的数据设计。 SQL 服务器主要是为预先设计的结构而设计的。是的,在 JSON 或 HSTORE 等方面已经做了很多工作。在这样做之前请三思而后行。查看更适合您的用例的其他数据库引擎。回到绘图板问为什么?

标签: mysql json database data-structures


【解决方案1】:

如果您使用的是 MySQL 5.7,则可以存储查询 JSON 对象。查看this link 了解更多详情和示例。

【讨论】:

  • 我正在使用旧版本的mysql,我不会升级它。请分享您的答案,记住旧版本的 mysql。
【解决方案2】:

从 MySQL 5.7 开始支持原生 JSON 数据类型。

另见https://dev.mysql.com/doc/refman/5.7/en/json.html

如果您的 MySQL 版本较低,则剩下的唯一选择是将其存储为文本。否则无法以简单的键值对方式存储。

【讨论】:

  • 但是保存为文本的问题是查询数据并不容易
  • 没错,但你希望它把它存储为键值对,对吧?
  • 正确。但我想将完整的嵌套 JSON 存储为值。如何做到这一点?
  • 假设: 1. 存储为键值对。 2.查询JSON数据的key值 3.JSON的最大长度未定义。如果所有假设都为真,则唯一的选择是使用文本。您的表格将有两列“键:数字”和“值:文本”。您将使用密钥作为标识符,并使用 JSON 数据的文本列。其他解决方案不会以键值存储结束。
猜你喜欢
  • 1970-01-01
  • 2018-04-05
  • 2020-08-30
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 2020-02-29
  • 2021-07-21
相关资源
最近更新 更多