redshift 中的动态表名

Posted

技术标签:

【中文标题】redshift 中的动态表名【英文标题】:dynamic table name in redshift 【发布时间】:2015-04-01 11:53:47 【问题描述】:

我有一些名称相似但前缀不同的表:us_cities、ca_cities 和 uk_cities。 这些表中的每一个仅包含一列(City_name)。我想将所有这些表联合在一起并得到这样的结果:

select 'US' as country, City_name from US_cities
union all
select 'CA' as country, City_name from CA_cities
union all
select 'UK' as country, City_name from UK_cities

将来我将拥有更多国家/地区的更多城市表,并且我想要一个动态查询/视图来识别相关表 (*_cities) 并将它们添加到联合查询中。如何在 Redshift 中做到这一点?

【问题讨论】:

【参考方案1】:

您可以使用information_schema.tables 表来获取与您的命名约定匹配的表的列表。但是,您需要一个外部进程来替换您的视图。

SELECT * FROM information_schema.tables WHERE table_name LIKE '%_cities';

恕我直言,您最好拥有一个 cities 表并使用视图来创建特定于国家/地区的版本。 :)

【讨论】:

这正是我理解我应该这样做的方式。可悲的是,我说的是他们管理的第 3 方桌子,所以我把它们分开了。谢谢

以上是关于redshift 中的动态表名的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Redshift 过程中写入动态创建的表

表名的 Redshift UDF?

Entity Framework linq 中的动态表名

使用表名中的 % 对多个表动态迭代相同的查询?

SQL Server 查询中的动态表名和变量名

使用 from 子句中的子查询动态选择表名