BigQuery 提取表架构
Posted
技术标签:
【中文标题】BigQuery 提取表架构【英文标题】:BigQuery extract table schema 【发布时间】:2020-01-09 07:55:14 【问题描述】:有一个巨大的嵌套(结构化)表。
需求:
在其他项目其他区域创建具有相同架构和数据的相同表。复制不能作为不同的区域工作。
一直在尝试:
将表导出到桶(JSON as AVRO 不允许在加载数据后编辑架构),然后提取旧表架构并从桶中创建一个新表,提供架构。由于结构化表架构的大小和复杂性,无法手动键入架构。
错误获取:
创建表后,AVRO auto schema detect
无法正确识别某些数据类型,JSON 失败并出现多个错误。
问题:
如何导出表模式,最好是 JSON 格式? 一旦我在 CLI 中运行它:
bq show --format=prettyjson Project1:BQDataset.Table1 | jq '.schema.fields'
我得到一个巨大的(数百行).json,通过简单地突出显示 CLI 结果列表中的文本在控制台复制它是不可行的。 fragment of JSON result in CLI
更新: 问题已解决,这种初始方法不正确。
【问题讨论】:
看看你的其他帖子。我可能会为您提供解决方案 【参考方案1】:您可以执行以下操作将结果保存在文件中:
bq show --format=prettyjson Project1:BQDataset.Table1 | jq '.schema.fields' > schema.json
您可以使用以下方法将文件复制到存储桶:
gsutil cp /path/to/file/schema.json gs://bucket/path/
无论如何,如果它更适合您,您可以通过以下方式在区域之间复制整个数据集
bq mk --transfer_config --project_id=myproject --data_source=cross_region_copy --target_dataset=123_demo_tokyo --display_name='My Dataset Copy' --params='"source_dataset_id":"123_demo_eu","source_project_id":"mysourceproject","overwrite_destination_table":"true"'
您可以查看完整参考here
【讨论】:
是的,复制整个数据集最终是一个解决方案,谢谢@rmesteves,帮了很多忙以上是关于BigQuery 提取表架构的主要内容,如果未能解决你的问题,请参考以下文章
使用 bigquery 中的 bigquery select 语句的 JSON 格式的现有表的架构