您可以从大查询 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 语句中获取列名而不运行它吗的主要内容,如果未能解决你的问题,请参考以下文章
MYSQLupdate/delete/select语句中的子查询