当前位置: 首页 > news >正文

postgres json数据处理

根据您提供的JSON结构,我将创建两个表和一个存储过程。以下是完整的SQL代码:

1. 创建两张表

-- 创建用户表
CREATE TABLE users (id INT PRIMARY KEY,name VARCHAR(100) NOT NULL,email VARCHAR(150) UNIQUE NOT NULL,isActive BOOLEAN DEFAULT true,created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);-- 创建产品表
CREATE TABLE products (productId VARCHAR(20) PRIMARY KEY,productName VARCHAR(200) NOT NULL,price DECIMAL(10,2) NOT NULL,category VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 创建存储过程

DELIMITER $$CREATE PROCEDURE InsertFromJSON(IN p_json_data TEXT,OUT p_result INT
)
BEGINDECLARE EXIT HANDLER FOR SQLEXCEPTIONBEGINROLLBACK;SET p_result = 0;RESIGNAL;END;START TRANSACTION;-- 清空表数据(如果需要保留历史数据,请删除这两行)DELETE FROM products;DELETE FROM users;-- 插入用户数据INSERT INTO users (id, name, email, isActive)SELECT JSON_EXTRACT(user_obj, '$.id') AS id,JSON_UNQUOTE(JSON_EXTRACT(user_obj, '$.name')) AS name,JSON_UNQUOTE(JSON_EXTRACT(user_obj, '$.email')) AS email,JSON_EXTRACT(user_obj, '$.isActive') AS isActiveFROM JSON_TABLE(JSON_EXTRACT(p_json_data, '$.users'),'$[*]' COLUMNS (user_obj JSON PATH '$')) AS users;-- 插入产品数据INSERT INTO products (productId, productName, price, category)SELECT JSON_UNQUOTE(JSON_EXTRACT(product_obj, '$.productId')) AS productId,JSON_UNQUOTE(JSON_EXTRACT(product_obj, '$.productName')) AS productName,JSON_EXTRACT(product_obj, '$.price') AS price,JSON_UNQUOTE(JSON_EXTRACT(product_obj, '$.category')) AS categoryFROM JSON_TABLE(JSON_EXTRACT(p_json_data, '$.products'),'$[*]' COLUMNS (product_obj JSON PATH '$')) AS products;COMMIT;SET p_result = 1;END
$$DELIMITER ;

3. 使用示例

-- 调用存储过程
SET @json_data = '{"users": [{"id": 1,"name": "张三","email": "zhangsan@example.com","isActive": true},{"id": 2,"name": "李四","email": "lisi@example.com","isActive": false},{"id": 3,"name": "王五","email": "wangwu@example.com","isActive": true}],"products": [{"productId": "P001","productName": "笔记本电脑","price": 5999.99,"category": "电子产品"},{"productId": "P002","productName": "办公椅","price": 899.5,"category": "家具"}]
}';SET @result = 0;
CALL InsertFromJSON(@json_data, @result);
SELECT @result AS 执行结果;

4. 验证插入结果

-- 查看用户表数据
SELECT * FROM users;-- 查看产品表数据
SELECT * FROM products;

存储过程特点说明:
事务处理:使用事务确保数据一致性,要么全部成功,要么全部回滚
错误处理:通过异常处理器捕获错误,失败时返回0
JSON解析:使用MySQL的JSON函数解析JSON字符串
数据清理:存储过程会先清空表数据,如需保留历史数据请删除DELETE语句
返回值:成功返回1,失败返回0
这个存储过程可以正确处理您提供的JSON格式,并将数据分别插入到对应的表中。

http://www.gsyq.cn/news/71396.html

相关文章:

  • 2025年中国十大护眼照明品牌推荐:口碑好的声控护眼灯有哪些
  • 2025重质碳酸钙行业TOP5权威推荐:鼎成钙业,甄选企业助
  • 2025 低投入靠谱自习室加盟代理推荐
  • 八大质量管理核心工具
  • 博士留学中介全奖 Offer 决胜局:谁才是真高手?
  • Rocky8 部署 Redis 7.0.15 一主两从哨兵模式
  • MATLAB实现:基于博弈论的全双工系统无线资源分配
  • 云主机带宽与传输速度的关系
  • 2025年AI自习室加盟推荐:AI自习室加盟风险与选择建议
  • 2025AI 自习室加盟值吗?优质代理品牌有哪些
  • 在windows平台上通过ssh-agent实现git凭证持久化
  • 2025 共聚焦显微镜厂家推荐:聚焦核心技术,优选靠谱合作伙伴
  • 2025年11月学习机品牌推荐:找准适配款,提分更高效
  • 安卓-本地asr语音识别-将非流式处理成流式-应用层面简单处理转换
  • MySQL 表误操作(RENAME + DROP)数据恢复技术文档
  • Redis主从哨兵模式连接踩坑全记录
  • 精细化+强执行 路尚控股集团股东会议为管理升级提供新思路
  • 新中心聚焦可信机器学习安全与隐私技术
  • 老年痴呆的早期干预治疗方案是什么?2025十大产品全面分析,KOUND脑醒素具有实际作用
  • 国标GB28181算法算力平台EasyGBS打造大型企业园区一体化安防监控新体系
  • 选择四川耀霖交通:您专业的四川道路交通标志牌厂家推荐
  • 2025年五大数控插齿机实力厂商推荐,专业插齿机厂家技术与服
  • 2025年度中国铁艺冲压配件厂家排名:助力精准匹配高品质铁艺
  • 2025佛山财产分割律师服务TOP5权威推荐:知名律所深度测
  • 2025年金华苹果售后维修点推荐:哪家口碑更出色?多维度比较与选购建议
  • 还在用 Nginx Ingress?这份阿里云迁移实操指南,让你无缝切换,功能升级!
  • 制造业上云怎么选?深信服托管云给出最优解
  • 2025 年砂磨机厂家最新推荐榜,技术实力与市场口碑深度解析纳米卧式砂磨机/实验室砂磨机/棒销砂磨机/卧式砂磨机/立式砂磨机/涡轮式砂磨机/实验室纳米砂磨机公司推荐
  • 2025年修补防水涂料生产厂家推荐榜,助你轻松选择可靠供应商
  • 基于Python+Vue开发的体育用品商城管理系统源码+运行步骤+适合计算机专业