Impala技术问询:查询数据库所有表的拼接列名
用Impala实现批量获取表名与列名拼接字符串
嘿,刚好可以利用Impala自带的元数据视图来解决这个问题,不用手动逐个表写查询,效率直接拉满!
直接用下面的Impala查询语句就能得到你想要的格式:
SELECT table_name AS table_name, CONCAT('"', GROUP_CONCAT(column_name, '+'), '"') AS column_concat FROM information_schema.columns WHERE table_schema = 'A' -- 替换成你的实际数据库名A GROUP BY table_name ORDER BY table_name;
语句细节解释:
- information_schema.columns:这是Impala内置的元数据视图,存储了所有数据库、表和列的结构信息,刚好用来批量提取我们需要的表与列数据。
- GROUP_CONCAT(column_name, '+'):把同一个表下的所有列名用
+拼接成一个连续字符串,完全匹配你要的列名拼接规则。 - CONCAT('"', ..., '"'):给拼接好的列名字符串套上双引号,和你要求的输出格式完全一致。
- WHERE table_schema = 'A':精准筛选出数据库A下的所有表,记得把
'A'换成你实际的数据库名称。 - GROUP BY table_name:按表名分组,确保每个表只返回一行结果,不会出现重复数据。
执行这个查询后,输出结果就会是你想要的:B1 | "C1+C2"、B2 | "D1+D2+D3"……这样的格式啦!
内容的提问来源于stack exchange,提问作者Tlatwork
相关产品推荐
相关产品推荐

