将数据从csv加载到现有的Postgres表后,我将有重复的记录需要合并。为此,我计划使用执行以下操作的存储过程:
current_record airports%ROWTPE;
new_record airports%ROWTYPE
FOR current_record in SELECT * from airports ORDER BY iko LOOP
SELECT * into (STRICT) new_record from airports where iko=current_record.iko AND oid < current_record.oid
-- IS IT POSSIBLE TO enumerate over each field as follows?
FOR int i = 0; i < new_record.fields.count; i++ LOOP
IF new_record.field[i] IS NOT NULL THEN current_record.field[i] =
new_record.field[i]
END LOOP;
END LOOP;
我可以使用如上所示的FOR内部循环对字段进行枚举,还是必须对表中每个字段的变更逻辑进行硬编码?大约有70列。
如何做到这一点的其他更好方法也会有所帮助。
TIA。
答案 0 :(得分:1)
没有直接的支持。但是,您可以从函数中查询系统目录。但这不会让事情变得更快。
以下是如何在触发器中执行此操作的示例。这可能会让你开始朝着正确的方向前进。