您可以从大查询 SDK 中的 Select 语句中获取列名而不运行它吗

Posted

技术标签:

【中文标题】您可以从大查询 SDK 中的 Select 语句中获取列名而不运行它吗【英文标题】:Can you get column names from a Select statement in the big query SDK without running it 【发布时间】:2019-02-19 07:44:43 【问题描述】:

鉴于 Big Query 和 Java SDK 中的 SELECT 语句,我有哪些选项可以在不获取数据的情况下获取实际列名?我知道我可以执行语句,然后通过 TableResult 获取 Schema。但是有没有办法在不获取数据的情况下获取名称?我们有一个工具,我们可以在其中运行预先未知的任意查询,在我的代码中,我想按名称访问结果列。

更新:有人将此标记为与 7 年前的条目重复。然而,我正在寻找一种方法来单独使用 Java SDK 来获取列名,而不是对查询本身做一些魔术或查询一些元表。

【问题讨论】:

Bigquery query to find the column names of a table的可能重复 【参考方案1】:

选项很少,但最简单的方法是将limit 0 添加到您的查询中,例如:

SELECT * FROM projectId.datasetId.tableId limit 0

【讨论】:

或保留查询原样并使用dryRun 设置。 我将首先测试dryRun,因为这样我就不必修改查询了。但是,我隐约记得在执行dryRun 时,Java SDK 中没有TableResult - 因此无法访问Schema。我可能是错的。将重新测试。

以上是关于您可以从大查询 SDK 中的 Select 语句中获取列名而不运行它吗的主要内容,如果未能解决你的问题,请参考以下文章

Oracle分页查询语句的写法(转)

MYSQLupdate/delete/select语句中的子查询

SQL数据库中查询语句Order By和Group By有啥区别

MySQL—— 子查询

SQL嵌套SELECT语句的用法-

sql 中的查询语句