PostgreSql Procedure copy split string to table
时间:2022-03-14 00:17
我的场景是这样,有一张表,里面有一个字段采用split string存数据。
虽然Hibernate本身提供了 org.hibernate.annotations.Type 注释,可以通过实现org.hibernate.usertype.UserType来转换这种可以结果数据,但是使用上并不方便。
为了干掉这种数据,我采用了mapping表来取代。对于新的数据当然没有问题,对于历史数据,需要procedure来同步。这里分享一个procedure。
主要是引用了 PostgreSql 的 函数。
刚好满足我们想要的结果,提供完全的procedure。
DROP FUNCTION IF EXISTS syncRef();
CREATE OR REPLACE FUNCTION syncRef() RETURNS void AS
$BODY$
DECLARE
r RECORD;
sqlStr text := 'SELECT id,regexp_split_to_table(refIds,'','') as refId from tableA where "length"(refIds) > 0;';
BEGIN
DELETE FROM tableB;
FOR r IN EXECUTE sqlStr LOOP
IF("length"(r.refId) > 0 AND r.refId != ',')
THEN
INSERT INTO tableB(id,ref_id) VALUES(r.id,cast(r.refId AS BIGINT));
END IF;
END LOOP;
RETURN;
END
$BODY$
LANGUAGE plpgsql ;
ALTER FUNCTION syncRef()
OWNER TO db;
SELECT syncRef();
DROP FUNCTION IF EXISTS syncRef();
热门排行
今日推荐
-
客拉客官方版
版本:1.0.1
大小:73.59MB
日期:2024-10-04
-
圣原易购手机版
版本:1.1.36
大小:29.61MB
日期:2024-10-04
-
美宝星火官方版
版本:1.0
大小:39.36MB
日期:2024-10-04
-
省钱汇官方版
版本:1.0.0
大小:23.79MB
日期:2024-10-04
-
响鹿完整版
版本:1.0.4
大小:81.37MB
日期:2024-10-04
-
番茄畅听音乐免费版
版本:4.8.7.32
大小:43.25MB
日期:2024-10-04
热门手游
-
神魔终结正式版
版本:v1.14.0125
大小:461.3M
日期:2024-10-04
-
嗜血之魂内测版
版本:v3.0
大小:1.9M
日期:2024-10-04
-
完美世界诸神之战完整版
版本:v1.10.0
大小:710.5M
日期:2024-10-04
-
盗墓OL手机版
版本:v2.931
大小:321.9M
日期:2024-10-04
-
猎魔村物语完整版
版本:v1.315
大小:108.1M
日期:2024-10-04
-
全民帮老妹儿正式版
版本:v1.0
大小:130.43MB
日期:2024-10-04