sql - 在 select 语句中选择多个模式

标签 sql snowflake-cloud-data-platform

正在访问的数据库在 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/

相关文章:

sql - 如何在每个 SQLite 行中插入唯一 ID?

csv - SnowSQL 性能极慢

sql - 在 Snowflake 中加载 JSON

snowflake-cloud-data-platform - Snowflake 中的异步游标执行

snowflake-cloud-data-platform - 在 Snowflake 中,仓库配置是如何进行的

mysql - 在数据库中有效存储变量值

sql - 具有不同参数的 2 个相同的 sql 查询 - 只有一个需要临时表

snowflake-cloud-data-platform - Snowflake 如何瞬时调整大小?

php - SQL注入(inject)测试-mysql_query

sql - 如何在 Visual Studio 中执行单元测试之前执行 SQL 脚本来准备数据库