【问题标题】:Is there a way to export a BigQuery table's schema as JSON?有没有办法将 BigQuery 表的架构导出为 JSON?
【发布时间】:2017-08-28 22:33:57
【问题描述】:

BigQuery table 具有可在网络 UI 中查看的架构 updated,或使用 bq 工具作为 JSON 文件用于 load data。但是,我找不到将这个模式从现有表转储到 JSON 文件(最好是从命令行)的方法。这可能吗?

【问题讨论】:

    标签: json google-bigquery


    【解决方案1】:

    答案更新

    自 2020 年 10 月起, 您还可以在 INFORMATION_SCHEMA.COLUMNS 上运行 SQL 查询,这是一种内省功能。

    SELECT *
    FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
    

    并使用聚合函数嵌套数据,例如

    SELECT table_name, ARRAY_AGG(STRUCT(column_name, data_type)) as columns
    FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
    GROUP BY table_name
    

    如果您还需要视图中的源代码,INFORMATION_SCHEMA.VIEWS 中的元数据也很有趣。

    然后从 BigQuery 界面点击保存结果/JSON,或者根据您的情况将其包装到 bq query 命令行中。

    来源:BigQuery release notes

    【讨论】:

    • 我觉得这应该是 2021 年公认的解决方案
    【解决方案2】:

    您可以使用 REST API 调用将 BigQuery 表架构获取为 JSON。文档链接:https://cloud.google.com/bigquery/docs/reference/rest/v2/tables/get

    curl 'https://bigquery.googleapis.com/bigquery/v2/projects/project-name/datasets/dataset-name/tables/table-name' \
         --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
         --header 'Accept: application/json' \
         --compressed
    

    【讨论】:

    • 谢谢你 - 我正在寻找 API 版本。有没有办法在没有 HTTP 调用的情况下做到这一点?像这样的函数就是 API 的所有更多“原生”外观的函数在幕后的样子吗? (我的意思是普通函数不是 HTTP 调用)。我只是不希望它变慢而且“调用”似乎很慢。
    • 当我通常加载数据等时,我不需要考虑例如身份验证。 @Soumendra Mishra
    【解决方案3】:

    您可以添加标志--schema[1]以避免表格数据信息。

    bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]
    
    bq show --schema --format=prettyjson mydataset.mytable > /tmp/myschema.json
    

    [1]https://cloud.google.com/bigquery/docs/managing-table-schemas

    【讨论】:

    • 太棒了!看起来这是在我提出这个问题几个月后在 Cloud SDK 版本 165 中添加的。比依赖 jq 要好得多。
    【解决方案4】:

    一种将模式从现有表转储到 JSON 文件的方法(最好从命令行)。这可能吗?

    下面试试

    bq show bigquery-public-data:samples.wikipedia  
    

    你可以使用-format标志来美化输出

    --格式:无|json|prettyjson|csv|sparse|pretty:

    命令输出的格式。选项包括:

    none:       ...
    pretty:     formatted table output  
    sparse:     simpler table output  
    prettyjson: easy-to-read JSON format  
    json:       maximally compact JSON  
    csv:        csv format with header   
    

    前三个是为了便于阅读,后三个是 用于传递给另一个程序。如果没有选择格式,将选择一种 基于命令运行。

    意识到我提供了部分答案 :o)

    下面做PO想要的

    bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields' 
    

    【讨论】:

    • 谢谢。我一直在寻找其他关键字,例如“export”和“dump”,以及“schema”这个词,但“show”的文档都没有。
    • 我建议直接在 Google Cloud SDK Shell 中探索 bq 命令。只需从 bq --help 和 ... 开始:o)
    • 为了后代,这个命令做我想要的:bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields'
    • 只需在末尾添加 ">yourfile.json" 不带引号
    • 用windows我发现需要引号"而不是撇号',如下:bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq ".schema.fields"
    猜你喜欢
    • 2020-03-22
    • 2011-02-05
    • 1970-01-01
    • 2020-01-04
    • 1970-01-01
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多