如何在Impala SQL中仅获取字符串类型的列?
在Impala SQL中提取字符串类型列的方法
要在Impala里仅提取字符串类型的列,没法直接通过普通SELECT语句实现,但可以借助Impala自带的元数据信息表来搞定,具体操作如下:
- 利用
information_schema.columns筛选目标列
Impala的information_schema.columns表存储了所有表的列元数据,包含列名、数据类型、所属库表等信息。我们可以通过查询这个表,筛选出字符串类型的列名。Impala中的字符串类型主要有STRING、VARCHAR、CHAR,筛选条件需要覆盖这些类型。
示例查询(假设目标表是my_db库下的my_table):
SELECT column_name FROM information_schema.columns WHERE table_schema = 'my_db' AND table_name = 'my_table' AND data_type IN ('STRING', 'VARCHAR', 'CHAR');
- 自动生成查询目标列的完整SQL
如果不想手动复制列名,可以用GROUP_CONCAT函数把筛选出的列名拼接成可直接运行的SELECT语句:
SELECT CONCAT('SELECT ', GROUP_CONCAT(column_name), ' FROM my_db.my_table;') AS target_query FROM information_schema.columns WHERE table_schema = 'my_db' AND table_name = 'my_table' AND data_type IN ('STRING', 'VARCHAR', 'CHAR');
执行这条语句后,结果里的target_query字段就是可以直接运行的SQL,执行它就能只查询该表下所有字符串类型的列。如果表在默认数据库中,可以去掉table_schema = 'my_db'这个条件,或者替换为你的默认库名。
内容的提问来源于stack exchange,提问作者Aymen Azoui
相关产品推荐
相关产品推荐

