Bigquery查询以查找表的列名

use*_*985 10 sql google-bigquery

我需要一个查询来查找Bigquery中表的列名,如SQL中的以下查询:

SELECT column_name,data_type,data_length,data_precision,nullable FROM all_tab_cols where table_name ='EMP';
Run Code Online (Sandbox Code Playgroud)

Lak*_*Lak 26

BigQuery 现在支持信息架构。

假设您有一个名为 MY_PROJECT.MY_DATASET 的数据集和一个名为 MY_TABLE 的表,那么您可以运行以下查询:

SELECT column_name
FROM MY_PROJECT.MY_DATASET.INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'MY_TABLE'
Run Code Online (Sandbox Code Playgroud)


Tia*_*ica 7

是的,您可以使用INFORMATION_SCHEMA获取表元数据。

过去链接中提到的示例之一从 github_repos 数据集中提交表的 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图中检索元数据,您只需要

  1. 在 GCP Console 中打开 BigQuery 网页界面。

  2. 在查询编辑器框中输入以下标准 SQL 查询。INFORMATION_SCHEMA 需要标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     *
    FROM
     `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
    WHERE
     table_name="commits"
     AND column_name="author"
     OR column_name="difference"
    
    Run Code Online (Sandbox Code Playgroud)

注意:INFORMATION_SCHEMA 视图名称区分大小写。

  1. 单击运行。

结果应如下所示

  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | table_name | column_name |     field_path      |                                                                      data_type                                                                      | description |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | commits    | author      | author              | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP>                                                                  | NULL        |
  | commits    | author      | author.name         | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.email        | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.time_sec     | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.tz_offset    | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.date         | TIMESTAMP                                                                                                                                           | NULL        |
  | commits    | difference  | difference          | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL        |
  | commits    | difference  | difference.old_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.new_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.old_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_repo | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_repo | STRING                                                                                                                                              | NULL        |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
Run Code Online (Sandbox Code Playgroud)


Cra*_*tro 4

更新:现在这是可能的!请参阅下面的INFORMATION SCHEMA文档和答案。

答案,大约 2012 年:

目前无法通过查询检索表元数据(即列名称和类型),尽管这不是第一次被请求。

您是否有理由需要这样做作为查询?表元数据可通过表 API获得。