有没有办法将BigQuery表的架构导出为JSON?

Dan*_*ter 48 json google-bigquery

BigQuery 具有可以在Web UI中查看,更新或用于使用该工具作为JSON文件加载数据的模式bq.但是,我找不到将此模式从现有表转储到JSON文件(最好是从命令行)的方法.那可能吗?

Mik*_*ant 69

将模式从现有表转储到JSON文件(最好是从命令行)的方法.那可能吗?

试试下面

bq show bigquery-public-data:samples.wikipedia  
Run Code Online (Sandbox Code Playgroud)

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

--format:none | json | prettyjson | csv |稀疏|漂亮:

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

none:       ...
pretty:     formatted table output  
sparse:     simpler table output  
prettyjson: easy-to-read JSON format  
json:       maximally compact JSON  
csv:        csv format with header   
Run Code Online (Sandbox Code Playgroud)

前三个用于人类可读,后三个用于传递给另一个程序.如果未选择任何格式,将根据命令运行选择一个格式.

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

以下是PO想要的

bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields' 
Run Code Online (Sandbox Code Playgroud)

  • 对于后代,这个命令做我想要的:`bq show --format = prettyjson bigquery-public-data:samples.wikipedia | jq'.schema.fields'` (4认同)
  • 只需在末尾添加"> yourfile.json",不带引号 (2认同)

bsm*_*osj 39

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

bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]

bq show --schema --format=prettyjson mydataset.mytable > /tmp/myschema.json
Run Code Online (Sandbox Code Playgroud)

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

  • 优秀!看起来这是在我问这个问题几个月后在 Cloud SDK 版本 165 中添加的。比依赖 `jq` 好多了。 (2认同)

Ant*_*ley 35

  1. 在 bq UI 上选择表。
  2. 选择您想要导出架构的列。
  3. 使用复制菜单将架构复制为 JSON。

表模式


Mic*_*Hua 12

答案更新

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

SELECT *
FROM <YOUR_DATASET>.INFORMATION_SCHEMA.COLUMNS
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

来源:BigQuery 发行说明