BigQuery table具有架构,可以在网络用户界面updated中查看,或者使用bq
工具作为JSON文件用于load data。但是,我找不到将此模式从现有表转储到JSON文件(最好是从命令行)的方法。这可能吗?
答案 0 :(得分:56)
将模式从现有表转储到JSON文件(最好是从命令行)的方法。这可能吗?
尝试以下
bq show bigquery-public-data:samples.wikipedia
您可以使用-format标志来美化输出
- 格式:无| 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
前三个是人类可读的,后三个是 传递到另一个程序。如果未选择任何格式,则将选择一个格式 基于命令运行。
意识到我提供了部分答案:o)
以下是PO想要的
bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields'
答案 1 :(得分:26)
您可以添加标记--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 :(得分: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
命令行中。
答案 3 :(得分: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