【发布时间】:2017-08-28 22:33:57
【问题描述】:
BigQuery table 具有可在网络 UI 中查看的架构 updated,或使用 bq 工具作为 JSON 文件用于 load data。但是,我找不到将这个模式从现有表转储到 JSON 文件(最好是从命令行)的方法。这可能吗?
【问题讨论】:
标签: json google-bigquery
BigQuery table 具有可在网络 UI 中查看的架构 updated,或使用 bq 工具作为 JSON 文件用于 load data。但是,我找不到将这个模式从现有表转储到 JSON 文件(最好是从命令行)的方法。这可能吗?
【问题讨论】:
标签: json google-bigquery
答案更新
自 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 命令行中。
【讨论】:
您可以使用 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
【讨论】:
您可以添加标志--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
【讨论】:
jq 要好得多。
一种将模式从现有表转储到 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'
【讨论】:
bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq '.schema.fields'
"而不是撇号',如下:bq show --format=prettyjson bigquery-public-data:samples.wikipedia | jq ".schema.fields"