Maison > base de données > tutoriel mysql > Greenplum获取一个SQL结果的字段名

Greenplum获取一个SQL结果的字段名

WBOY
Libérer: 2016-06-07 17:08:20
original
1348 Les gens l'ont consulté

在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”开头的都给找出来,就是字段名了。

linux

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal