【问题标题】:How to import specific fields from objects from a JSON file to MYSQL 8.0如何将对象中的特定字段从 JSON 文件导入 MYSQL 8.0
【发布时间】:2021-01-25 10:13:27
【问题描述】:

使用 MySql 8,您可以使用 --import 命令直接使用 jsondata 标志导入 json 数据。这是官方链接:https://dev.mysql.com/doc/mysql-shell/8.0/en/mysql-shell-utilities-json-import-command.html

但是如何将 json 数据中的特定字段导入到已定义表的特定列中。
例如:如果您有一个带有 (id, code, name) 的 countries 表和一个结构类似于

的 json 文件
[
 {
  id: 1,
  code: "foo",
  name: "bar",
  otherField1: "baz",
  otherField2: "baz2" 
 },
 {
  ...
 }
]

【问题讨论】:

  • 我不认为 shell 实用程序可用于将 JSON 文档转换为 MySQL 表数据。给出的示例用于将多个 JSON 移动到 JSON 类型的 单个 列中。
  • 虽然你可以用它来将数据导入表格mysqlserverteam.com/…你不能选择它们,你试试用oho或python perl,c# vb net.....

标签: mysql


【解决方案1】:

分两步完成。首先,您将 JSON 文件导入临时表。然后你从临时表插入到你的最终表中

类似

create table country_staging json_text VARCHAR(1000);

mysqlsh user@localhost:33062 --import /jsonpath/countries.json countries_staging jsondata --schema=mydb


INSERT INTO countries (id, code, name, otherfield1, otherfield2)
SELECT JSON_EXTRACT(json_text, "$.id"), 
       JSON_EXTRACT(json_text, "$.code"),
       JSON_EXTRACT(json_text, "$.name"),
       JSON_EXTRACT(json_text, "$.otherfield1"),
       JSON_EXTRACT(json_text, "$.otherfield2")
FROM countries_staging

【讨论】:

  • 赞成,但我建议使用 JSON_TABLE() 因为 OP 正在导入的 JSON 是一个数组。我猜他们希望将其导入多行,每个数组元素一行。
  • 感谢您的回复。我认为我的数据不适合单个 varchar 字段。另外,正如 Bill Karwin 所指出的,它是一个 json 对象数组,对于城市来说可能是巨大的。我查看了 JSON_TABLE() 但似乎无法确切地弄清楚如何实现它。也许你们中的一个人可以进一步详细说明。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-19
  • 2021-11-26
  • 2018-03-29
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多