技术初心程序园

转存数据一记

2020-02-25  本文已影响0人  triplestudio

偶得数据一块,形如下:

{
 "SRCB": "深圳农村商业银行",
 "BGB": "广西北部湾银行",
 "SHRCB": "上海农村商业银行",
 "BJBANK": "北京银行",
 "WHCCB": "威海市商业银行",
 "BOZK": "周口银行",
 "KORLABANK": "库尔勒市商业银行",
 "SPABANK": "平安银行",
 "SDEB": "顺德农商银行",
......
}

欲存为基础数据,建项程控、寻求工具终觉繁琐。

灵感一现,::json 出现在脑海中,有它,这一块数据可以纹丝不动进行解析。
过程:解析之 - 建表 - 遍历插入之 - 表格显示之
这其中,防重建错误,防重复插入错误,PostgreSQL 皆有优雅处理策略。

写好基本结构,留一空予数据块,部分或全部,来之安之,可重复执行,谓之幂等。
基础结构如下:

DO $$
DECLARE 
    lv_row record; 
    jsonObj json := ''::json; /* 留空予数据块 */
BEGIN   
    -- 建表
    create table if not exists  bank(id varchar(10) primary key, name varchar(40));
    -- 遍历插入
    FOR lv_row IN SELECT * FROM json_each(jsonObj) LOOP  
        insert into bank(id, name) values( lv_row.key, jsonObj ->> lv_row.key) on conflict(id) do nothing;
    END LOOP;   
END $$;

-- 显示表格
select * from bank;

实例运行如下:


运行结果

知识点:
表不存在时才创建表create table if not exists bank(id varchar(10) primary key, name varchar(40));
json 行遍历 json_each(jsonObj)
插入冲突 on conflict(id) do nothing

上一篇下一篇

猜你喜欢

热点阅读