有没有一种方法可以将BigQuery表的架构导出为JSON?


Answers:


111

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

尝试下面

bq show bigquery-public-data:samples.wikipedia  

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

--format:none | 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”的文档都没有。
Daniel Waechter

1
我建议直接在Google Cloud SDK Shell中浏览bq命令。刚开始使用bq --help和...:o)
Mikhail Berlyant '17

5
对于后代,此命令bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields'
可以满足

3
只需在末尾添加“> yourfile.json”,不带引号
fpopic

1
在Windows中,我发现需要用引号"代替撇号',如下所示:bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq ".schema.fields"
philshem

71

您可以添加标志--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


2
优秀的!似乎是在我问了这个问题几个月后才在Cloud SDK版本165中添加的。比依赖更好jq
Daniel Waechter

0

您可以使用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调用)。我只是不希望它变慢而“通话”似乎变慢。
makmak

当我通常加载数据时,例如,我不需要考虑身份验证。@Soumendra Mishra
makmak
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.