MariaDB 是不是具有 MYSQL/Oracle JSON_TABLE 的可扩展等效项

Posted

技术标签:

【中文标题】MariaDB 是不是具有 MYSQL/Oracle JSON_TABLE 的可扩展等效项【英文标题】:Does MariaDB have a scableable equivilant of MYSQL/Oracle JSON_TABLEMariaDB 是否具有 MYSQL/Oracle JSON_TABLE 的可扩展等效项 【发布时间】:2019-03-12 17:52:41 【问题描述】:

我需要取消嵌套存储为 JSON 文档的一部分的大型数组。

在 Oracle 和 mysql 中,我可以为此使用 JSON_TABLE

在 SQL Server 中我可以使用 OPENJSON

在 Postgres 中我可以使用 JSON(B)_array_elements

但我在 MariaDB 中碰壁了......

我已经浏览了文档,但看不到该怎么做。我可能需要取消嵌套数千行,并且所有上述数据库都能够以可扩展且可扩展的方式完成取消嵌套表现方式....

这是一个非常简化的数据子集

 "data": 
    "EMPLOYEES": [
        [100,   "Steven",   "King",     "SKING",    "515.123.4567",     "2003-06-17T00:00:00",  "AD_PRES",  24000,  null,   null,   90  ],
        [101,   "Neena",    "Kochhar",  "NKOCHHAR", "515.123.4568",     "2005-09-21T00:00:00",  "AD_VP",    17000,  null,   100,    90  ]
    ],
    "DEPARTMENTS": [
        [10,    "Administration",   200,    1700],
        [20,    "Marketing",        201,    1800]
    ]
  
  

【问题讨论】:

看mariadb.com/kb/en/library/connect-json-table-type MySQL 没有很好的 JSON 支持,我不希望 MariaDB 在这方面有很大改进。查看文档以了解您可以/不能做什么。 @TimBiegeleisen 我能够通过 MySQL 8 中的 JSON 支持实现我的目标,其中包括 JSON_TABLE,它完全符合我的需要并且似乎没问题。我对 MYSQL 的最大问题是使用 NODE.js 将大型 JSON 文件从客户端平台移动到数据库,以便分解它们。除非我遗漏了一些东西,否则我必须为此使用 LOAD FILE LOCAL PATH,这非常慢。无论如何,我看不到使用 MYSQL 节点驱动程序将文件流式传输到长文本列 @HaimEvgi。我已阅读该链接,但我认为它不能满足我的需求。如果我理解它依赖于能够暂存要在服务器上处理的文件。无论如何,我看不到我可以让使用 MariasDB 节点驱动程序编写的节点客户端上传我需要处理的文件。我也不确定它是否可以处理我需要查看的文件,这些文件基本上是一个数据库转储,每个表都有一个数组,每行都包含一个数组。每个表都由一个为该表命名的对象表示...... 数据应该在插入之前被分成表格的行和列。 JSON 不适合那种数据和结构。 【参考方案1】:

自 10.3.12 起,MariaDB 没有 JSON_TABLE 函数

【讨论】:

而棘手的“黑魔法”解决方案是一笔巨大的技术债务,您将不得不在某个时候偿还

以上是关于MariaDB 是不是具有 MYSQL/Oracle JSON_TABLE 的可扩展等效项的主要内容,如果未能解决你的问题,请参考以下文章

mariadb:选择具有复杂列的不同

MariaDB/MySQL UPDATE 语句具有多个连接,包括范围连接

如何在 MySQL/MariaDB 中创建与 root 具有相同权限的用户? [关闭]

SQL:在 MySQL/MariaDB 中选择具有窗口函数的某些行

mariadb 在具有主机路径卷的 Kubernetes pod 内崩溃

sql 创建具有mysql / mariadb所有权限的admin用户