检查 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如何检查表中是不是存在列? [复制]

检查表中是不是存在列,如果没有,则添加列

如何使用 python pyodbc 检查表中是不是存在列?

MySQL,使用SQL检查表中是不是存在列

根据 Presto/Hive 中的列值聚合列

如何使用 JdbcTemplate 检查表列是不是存在?