我有一个要从模式中的多个表中删除的所有列名的列表,但并非列表中的所有列名在所有表中都存在。
对于我拥有的模式和表名,我可以在单个查询中检查列是否与列表中的列名匹配,只需删除
假设要删除的列列表是
Drop_col = ['AB',' BC', FG', 'TR']但是我的TABLE1在列列表中只有'BC','TR‘
Query = ALTER TABLE SCHEMA_NAME.TABLE1 DROP COLUMN IN ({Drop}).format (Drop = Drop_col)就像这样??或其他建议??
发布于 2020-08-18 18:23:38
您可以使用列视图和存储过程来实现这一点。
1-传递存储过程中的列列表
2-使用COLUMNS视图获取表、列结果的列表
3-迭代结果集和删除列
https://docs.snowflake.com/en/sql-reference/info-schema/columns.html
https://community.snowflake.com/s/article/How-to-scan-Result-set-in-stored-procedures
https://stackoverflow.com/questions/63465335
复制相似问题