栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

成功将JSON数据插入到PostgreSQL查询中,但是输出是意外的

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

成功将JSON数据插入到PostgreSQL查询中,但是输出是意外的

首先,在postgresql中,如果您确实希望将字段名和表名都大写,则需要创建表,如下所示:

CREATE TABLE "TEST" ("MULTIPROCESS" VARCHAr(20), "HTTP_REFERER" VARCHAr(50));

然后查询将像:

SELECt * FROM json_populate_record(NULL::"TEST", '{"wsgi.multiprocess": true,"HTTP_REFERER": "http://localhost:9000/"}'); MULTIPROCESS |      HTTP_REFERER      --------------+------------------------   | http://localhost:9000/

如您所见,由于json和sql表中的字段名称不匹配,因此multiprocess保留为空白。要摆脱这种情况,您可以执行外部脚本或postgresql函数。

例如:

CREATE OR REPLACe  FUNCTION replace_json_keys(IN js TEXT)   RETURNS json   STABLE   AS$$BEGIN  js := replace(js, '"wsgi.multiprocess"', '"MULTIPROCESS"');  return js::json;END;$$ LANGUAGE 'plpgsql';

然后,您可以执行以下操作:

SELECT * FROM json_populate_record(NULL::"TEST", replace_json_keys('{"wsgi.multiprocess": true,"HTTP_REFERER": "http://localhost:9000/"}')); MULTIPROCESS |      HTTP_REFERER      --------------+------------------------ true         | http://localhost:9000/

但是,最好的解决方案不是使用

replace()
而是
json_each()
将键和值拆分为两个数组,使用“ case
when”进行循环以将json键映射到sql键,然后返回一个新的json。
json_object(keys[],values[])
准备插入的对象(带有)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/441646.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号