IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 问题:修改mysql中某个字段,json格式数据中的值 -> 正文阅读

[大数据]问题:修改mysql中某个字段,json格式数据中的值

生产环境场景:一张mysql数据表,有一个String/text类型字段,存储的json格式数据,现在要对json数据做修改(比如:根据条件对endDate的值做修改),如何实现?

举例:表结构如下(简写的样板),其中sync_info字段存储的是json格式数据

CREATE TABLE `oms_order_sync_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `oms_order_no` varchar(100) NOT NULL COMMENT 'OMS订单编号',
  `sync_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '同步状态:0-失败,1-成功',
  `sync_info` text NOT NULL COMMENT '同步信息',
  PRIMARY KEY (`id`),
  UNIQUE KEY `idx` (`oms_order_no`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='oms订单-同步异常日志表';
sync_info字段存储的是json格式数据(简写的样板)

{
    "omsOrderNo":"oms12345678",
    "createTime":"2021-12-07 12:56:49",
    "detailList":[
        {
  
            "endDate":"2021-11-22 00:00:00",
            "skuCode":"111111",
            "productDate":"2021-11-22 00:00:00"
        
        },
        {
            "endDate":"2021-10-11 00:00:00",
            "skuCode":"222222",
            "productDate":"2021-10-11 00:00:00"
        },
        {
            "endDate":"2021-09-11 00:00:00",
            "skuCode":"333333",
            "productDate":"2021-09-11 00:00:00"
        }
    ],
    "orderType":"1"
}

一、方法一(在后端写代码实现):

写的代码需要上线(拉分支发布紧急版本,不推荐)

后端读取数据库,解析修改数据,再update,很简单,略。

二、方法二(纯mysql脚本实现):

生产执行纯sql脚本(mysql版本需要支持json函数,脚本比较复杂)

  • 例子1(不需要json中条件,只修改某个值):
//将oms_order_no= '传条件oms订单号'的所有记录,替换sync_info字段中,key为detailList的第一个对象中属性endDate的value值
UPDATE oms_order_sync_log
SET sync_info = json_set( sync_info, "$.detailList[0].endDate", "2021-12-22 00:00:00" ) 
WHERE
	oms_order_no= '传条件oms订单号';
  • 例子2(不需要条件,只修改某个值):

三、方法三(后端写代码 + mysql脚本实现):

写的代码不需要上线,把正确的数据刷到生产(推荐)

步骤1:把生产数据库的sql导出来,如: xxx.sql
步骤2:把 xxx.sql 导入到开发数据库
步骤3:在本地开发环境写代码,把 xxx.sql中的数据,改正确(前提:数据量大
步骤4:把开发数据库中,改正确的sql导出来
步骤5:把正确的数据更新到生产数据库

四、方法四(手动改数据 + mysql脚本实现):

步骤1:把生产数据库的sql导出来,如: xxx.sql
步骤2:把 xxx.sql 导入到开发数据库
步骤3:本地开发环境,手动把 xxx.sql中的数据,改正确(前提:数据量很少
步骤4:把开发数据库中,改正确的sql导出来
步骤5:把正确的数据更新到生产数据库

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2021-12-08 13:53:00  更:2021-12-08 13:53:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:48:17-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码