问题描述
我们有一个 BigQuery 数据集,其中包含一些很长的表(包含数据)列表。由于我正在接管一个数据管道,我想通过进行测试来熟悉它,因此我想复制这些数据集/表而不复制截断表。本质上,我想使用它们的模式在测试数据集中重新创建这些表。如何在 bq
客户端中完成此操作?
解决方法
考虑到您不想复制数据而是模式,您有几个选择:
1.- 提取每个表的架构,然后创建新的空表。
$ bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]
$ bq mk --table [PROJECT_ID]:[NEW_DATASET].[TABLE] [SCHEMA_FILE]
2.- 使用 LIMIT 0 运行查询并设置目标表。
bq query "SELECT * FROM [DATASET].[TABLE] LIMIT 0" --destination_table [NEW_DATASET].[TABLE]