如何使用动态列名将 CDC 数据从流插入到另一个表

问题描述

我有一个 SNowflake 存储过程,我想在没有硬编码列名称的情况下使用“插入”。 INSERT INTO MEMBERS_TARGET (ID,NAME) SELECT ID,NAME FROM MEMBERS_STREAM;

这就是我所拥有的,列名是硬编码的。查询应将数据从 MEMBERS_STREAM 复制到 MEMBERS_TARGET。流有更多的列,例如 MetaDATA$ACTION |元数据$ISUPDATE |我不打算复制 MetaDATA$ROW_ID。

解决方法

如果不是硬编码,我不知道有什么方法可以不复制 METADATA 列。但是,如果您不想要数据,最简单的方法可能是将它们添加到您的目标中,使用 SELECT * 插入,然后在 sp 中将它们设置为 NULL。

或者,在您的 sp 的早期,运行 ALTER TABLE ADD COLUMN 以添加列,使用 SELECT * 插入,然后运行 ​​ALTER TABLE DROP COLUMN 以删除列?这样你的表结构就保持不变,尽管它会有一些额外的列。

通常不推荐使用 SELECT * 但这是我能想到的最简单的替代方法