检查 presto/hive 表中是不是存在列名
Posted
技术标签:
【中文标题】检查 presto/hive 表中是不是存在列名【英文标题】:Check if a column name is exist in presto/hive table检查 presto/hive 表中是否存在列名 【发布时间】:2021-01-31 06:36:00 【问题描述】:一个主表包含不同的版本。旧版本表中可能不存在字段。 例如 mytable_1 可能只包含 columnA
columnA
a
a
c
c
而 mytable_2 可能包含一个名为 columnB 的额外列
columnA columnB
a b
a k
c d
c e
我正在尝试运行某事
select * from mytable_version
where
columnA = 'a'
IF columnB exist
And columnB = 'b'
endif
结果会像 如果在 mytable_1 上运行它 将返回前两行。 如果在 mytable_2 上运行它 第一行将被返回。
为此如何编写查询?
【问题讨论】:
请提供样本数据和期望的结果。此外,确定您使用的是 Hive 还是 Presto。它们不一样。 【参考方案1】:您可以通过编程方式获取表中的列列表:
SELECT *
FROM information_schema.columns
WHERE table_name = 'mytable_...' AND table_schema = '....'
如果给定列存在,您似乎想利用此信息发出带有附加条件的查询。为此,您需要在向 Presto 发出查询的应用程序中应用此逻辑,仅在 SQL 中无法实现。
【讨论】:
以上是关于检查 presto/hive 表中是不是存在列名的主要内容,如果未能解决你的问题,请参考以下文章
Sql Server 2008如何检查表中是不是存在列? [复制]