【发布时间】:2016-09-09 15:26:53
【问题描述】:
被访问的数据库在 Snowflake 上;不确定幕后的存储细节。
我现在有一个查询,它从存储在同一数据库下不同模式中的 41 个数据表创建一个新视图,看起来像这样:
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
但不确定这将如何工作,以及如何正确合并结果数据。
【问题讨论】:
-
你肯定需要为你的 RDBMS 标记这个。 sql服务器?甲骨文? mysql?.... sql-server 的答案也是“否”,您不能创建一个视图,以这种方式自动从动态识别的模式中进行选择。但是您可以创建一个使用动态 sql 执行此操作的存储过程,或者您可以创建一个存储过程来根据现有架构更改和重新创建您的视图,然后在视图上运行查询之前运行它。
-
它在雪花上运行,实际上不知道后端是什么。
-
好的,我想我标记了正确的,但请检查一下。抱歉,我没有使用该特定平台,因此无法提供帮助。
-
感谢帮助,我对平台也不太熟悉
标签: sql snowflake-cloud-data-platform