处理MYSQL里json格式结构化

目录

一、建新数据库

二、建表

三、插入数据


昨天写的好像没存下来,那只能重新写一遍了

背景:原始数据库是mysql的里面一个字段为json,所以存了半结构化的无数据

 目标:处理成结构化数据,存到dwd层

一、建新数据库

CREATE database if not exists an hetong test;

二、建表

USE anneng_test;
drop table hr_department;
CREATE TABLE hr_department(
    id INT(10) COMMENT '主键',
    name VARCHAR(25) DEFAULT NULL COMMENT '单位名称',
    deleted BOOL,
    sortnum VARCHAR(30) DEFAULT NULL COMMENT '排序号',
    disabled BOOL DEFAULT NULL,
    parentId VARCHAR(10) DEFAULT NULL COMMENT '上级单位id',
    postCode VARCHAR(10) DEFAULT NULL,
    updatedAt VARCHAR(35) DEFAULT NULL,
    postalAddress VARCHAR(35) DEFAULT NULL,
    registeredAddress VARCHAR(35) DEFAULT NULL,
    uniformSocialCreditCode VARCHAR(35) DEFAULT NULL
);

三、插入数据

导入数据这里有个插曲,有的字段由于mysql版本的问题不兼容,所以需要修改字段类型

ALTER TABLE hr_department
MODIFY COLUMN deleted BOOL;

在插入

USE an_feb_ods_hetong;  -- 切换到目标数据库
-- 插入解耦后的数据到新表格
INSERT INTO hr_department(
    id,
    parentId,
    json_id,
    name,
    deleted,
    sortnum,
    disabled,
    json_parentId,
    postCode,
    updatedAt,
    postalAddress,
    registeredAddress,
    uniformSocialCreditCode
)
SELECT
    id,
    parentId,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.id')) AS json_id,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.name')) AS name,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.deleted')) AS deleted,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.sortnum')) AS sortnum,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.disabled')) AS disabled,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.parentId')) AS json_parentId,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.postCode')) AS postCode,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.updatedAt')) AS updatedAt,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.postalAddress')) AS postalAddress,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.registeredAddress')) AS registeredAddress,
    JSON_UNQUOTE(JSON_EXTRACT(json, '$.uniformSocialCreditCode')) AS uniformSocialCreditCode
FROM an_hetong.hr_department;

四、导入成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值