在pgsql的psql命令里直接select输出Json字段是一长串字符,这对阅读非常不友好,查了好久也没查到pgsql有格式化输出Json字段的函数,只好折腾一番。
表结构如下:
pgsql=#\dtest资料表"pgsql.test"栏位|型别|修饰词------+---------+--------ID|integer|非空info|Jsonb|非空索引:"test_pkey"PRIMARYKEY,btree(ID)"test_info_IDx"gin(info)
SELECT的格式化输出:
pgsql=#selectID,replace(replace(regexp_replace(info::text,',"',concat(',chr(10),chr(9),'"'),'g'),'{',concat('{',chr(9))),'}',concat(chr(10),'}'))asinfofromtest;ID|info----+---------------------------------------------------------------1|{+|"a":[1,2,3],+|"b":[4,5,6]+|}2|{+|"a":[7,8,9],+|"b":[10,11,12]+|}3|{+|"guID":"9c36adc1-7fb5-4d5b-83b4-90356a46061a",+|"name":"Angelabarton",+|"Tags":["enim",+|"aliquip",+|"qui"],+|"address":"178Howardplace,Gulf,Washington,702",+|"company":"Magnafone",+|"latitude":19.793713,+|"is_active":true,+|"longitude":86.513373,+|"registered":"2009-11-07T08:53:22+08:00"+|}(3行记录
为了方便今后每次调用,写成函数:
createfunctionformat_Json(text)returnstextas$$selectreplace(replace(regexp_replace(,'}'))asJson_s;$$languagesql;
这样看起来就简洁直观多了:
pgsql=#selectID,format_Json(info::text)asinfofromtestwhereID=3;ID|info----+---------------------------------------------------------------3|{+|"guID":"9c36adc1-7fb5-4d5b-83b4-90356a46061a",+|"registered":"2009-11-07T08:53:22+08:00"+|}(1行记录)总结
以上是内存溢出为你收集整理的在PostgreSQL命令行psql里格式化输出json字段全部内容,希望文章能够帮你解决在PostgreSQL命令行psql里格式化输出json字段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)