当前位置: 首页 > 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.jsqmd.com/news/60849/

相关文章:

  • smart_IO
  • 2025年12月振动时效机TOP3实力厂商新盘点:技术适配与服务特色双视角
  • 2025年中国十大护眼照明品牌推荐:口碑好的声控护眼灯有哪些
  • 2025重质碳酸钙行业TOP5权威推荐:鼎成钙业,甄选企业助
  • 2025 低投入靠谱自习室加盟代理推荐
  • 2025年广东回收基恩士测量仪品牌权威榜单:广东回收基恩士光电开关/广东回收基恩士控制器/广东回收传感器渠道精选
  • 2025博士申请套磁策略成功率榜单:谁的成功率最高?
  • 八大质量管理核心工具
  • 2025年12月人行通道闸机厂家最新实力TOP榜:速通门、摆闸、转闸、单向门选择指南
  • 深入解析:2025-11-07 ZYZ28-NOIP模拟赛-Round3 hetao1733837的record
  • 2025年沥青贴缝带生产厂家权威推荐榜单:6cm贴缝带‌/自粘式贴缝带‌/立面贴缝带‌源头厂家精选
  • 博士留学中介全奖 Offer 决胜局:谁才是真高手?
  • MATLAB实现:基于博弈论的全双工系统无线资源分配
  • 叶轮加工行业十大头部企业市场占有率排名
  • 美国留学录取决胜局:谁的 Offer 含金量足?
  • 美国留学申请策略巅峰对决:机构谁的布局最精妙?
  • 云主机带宽与传输速度的关系
  • 2025年防落梁装置施工实力厂家权威推荐榜单:防落梁装置防落梁挡块‌/箱梁防落梁装置‌/连续梁防落梁装置‌源头厂家精选
  • 2025年武汉装修辅材平台排行榜,伟星大口径管/知名管/系列
  • 2025年AI自习室加盟推荐:AI自习室加盟风险与选择建议
  • 在windows平台上通过ssh-agent实现git凭证持久化
  • 南京留学中介大比拼:谁的性价比与服务更胜一筹?
  • 2025年重庆高端私宅装修设计公司权威推荐榜单:大平层设计‌/别墅设计‌/大宅设计‌源头公司精选
  • 使用DTS迁移软件迁移oracle到DM
  • 松鼠Ai学习机好用吗?
  • 【ArcMap】投影坐标系转换为地理坐标系(永久)
  • 松鼠Ai人工智能教育怎么样?
  • 【IEEE出版 | 上海理工大学主办】第六届机械自动化与智能制造国际学术会议(MAIM 2025)
  • 2025 共聚焦显微镜厂家推荐:聚焦核心技术,优选靠谱合作伙伴
  • 2025年11月学习机品牌推荐:找准适配款,提分更高效