Postgresql:包含列名的拆分单元格(其中 Metacolumn='col1;二氧化硅;col3;..')分离成数组以动态生成 INSERT 语句



在PostgreSQL(和Sybase ADS)中,我在两个平台上进行了自己的基于触发器的多米米主复制,这些平台必须动态处理各种复合键,有时在某些表上没有PK。为了使其最简单,我试图自动生成插入/update/delete,用户可以在其中选择要复制的列,通过列出由半分离的单元格中列出列的名称。

- " SELECT Address, city, us_state, zipcode FROM public.place;"将是需要复制的表。 - 用于出版/订阅的METATIONT将具有一个包含" Address;city;us_state;zipcode"的单元格。 - 我正在使用insert/update/删除触发器捕获新的行数据,并希望使用这些列来动态做出类似的语句可以通过脚本在Desination上读取和执行的" insert into place (Address,city,us_state,zipcode) VALUES (NEW.Address,NEW.city,NEW.us_state,NEW.zipcode);"。我将在更新中使用旧前缀进行更新和删除的操作,并在需要时删除生成的语句。

我不是在寻找某人做很多工作,而是要对所涉及的任何功能,逻辑和陈述提出了解。谢谢您的任何想法或建议。

您可以拆分字符串并使用regexp_split_to_array函数创建数组。

可能是:regexp_split_to_array(metacolumn, ';')

有关字符串函数的更多信息:https://www.postgresql.org/docs/9.6/functions-string.html

最新更新