Greenplum获取一个SQL结果的字段名
程序员文章站
2022-04-23 20:37:39
...
在Greenplum中,对于任意一个SQL,我们想获取这个SQL执行后的字段名是比较难的。比方说在写一个通用工具的时候,使用copy命令将一
在Greenplum中,对于任意一个SQL,我们想获取这个SQL执行后的字段名是比较难的。
比方说在写一个通用工具的时候,使用copy命令将一个SQL导出成文本,但是每个字段的名称导出的文本中却没有,如果使用自己解析SQL的话就太复杂了
如果我们想取得这些字段名的话,不真正执行sql,因为在生成执行计划的时候已经,我知道的有以下几种方法:
1.使用JDBC,prepareStatement先生成执行计划,然后获取字段名:
ps:不止是JDBC,其他的客户端接口估计都会有这种接口将字段给取出来。看了jdbc的源码,在获取metaData信息的时候,是直接跟数据库交互,然后将这些信息接收过来的。对于其他的,应该都是有定义好的接口的,这个需要自己去挖掘。
2.explain 如果加上verbose会将整个解析后的语法数打印出来。如下:
其中最上层的targetlist就是 SQL要返回的字段列表。
这样,我们能不能利用这个写一个函数,来将这个字段名给取出来呢,如果直接解析这个语法树还是比较麻烦的。我们发现,字段名前面都有一个 :resname开头,我们可以遍历这个数,,把“ :resname”开头的都给找出来,就是字段名了。
推荐阅读
-
一个查询的SQL语句请教,希望能够用一条SQL语句得到结果
-
5位评委对参赛选手进行打分,将所有的打分结果存储到对应类型的数组中, 将所有的评分结果去除一个最低分,去除一个最高分,然后获取的平均分数为 选手的最终得分.设计程序,用键盘输入5位评委的评分,并打印输
-
【正则匹配】python使用正则re匹配获取符合正则条件的一个或多个结果
-
SQL一次性查询一个字段不同条件下的统计结果
-
在SQL中获取一个长字符串中某个字符串出现次数的实现方法_MySQL
-
请问个mysql有关问题.关于获取查询结果中某一个字段的最大值.(按照其他字段排序)
-
mysql ROW_COUNT 获取上一个sql操作所影响的行数
-
sql中获取一个数据库中的所有表的名称、一个表中所有字段的名称
-
sql中获取一个数据库中的所有表的名称、一个表中所有字段的名称
-
分享sql 查询结果的一个预处理小技巧