正在访问的数据库在 Snowflake 上;不确定幕后的存储细节。
我现在有一个查询,它从存储在同一数据库下不同模式中的 41 个数据表创建一个新 View ,看起来像这样:
CREATE VIEW all_data AS
SELECT * FROM db.schema1.data UNION ALL
SELECT * FROM db.schema2.data UNION ALL
SELECT * FROM db.schema3.data
此查询每天运行一次。我的问题是我每隔几天就会添加新的数据表,我必须手动编辑查询以包含这些新表,因为它们存储在不同的模式下(并且模式的命名方案也不一致,因为我无法控制的原因)。有没有一种方法可以使用子查询选择数据库中的所有模式,这样我就可以每天运行查询,而无需在添加新模式 + 表时手动更新?
我希望结果查询的结构有点像
CREATE VIEW all_data as
SELECT * FROM [SELECT schemas from db].data
但不确定它是如何工作的,以及如何正确合并结果数据。
最佳答案
不幸的是,在 Snowflake 中您不能动态构造 SQL 语句(目前)。您当然可以通过一种受支持的语言(例如 Python、JS)的脚本来实现您想要实现的目标,方法是首先找到所有模式,然后构建完整的 SQL 语句。
希望这对您有所帮助。
关于sql - 在 select 语句中选择多个模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39415009/