根据 BigQuery 中另一个 table 的架构创建一个空的 table

Creating an empty table based on another table's schema in BigQuery

我们有一个 BigQuery 数据集,其中包含一长串表(包含数据)。由于我接管了一个数据管道,我想通过测试来熟悉它,所以我想复制那些 dataset/tables 而不复制截断表。本质上,我想使用它们的模式在测试数据集中重新创建这些表。如何在 bq 客户端中完成此操作?

考虑到您不想复制数据但复制架构,您有几个选择:

1.- 提取每个 table 的架构,然后创建新的空架构。

$ bq show --schema --format=prettyjson [PROJECT_ID]:[DATASET].[TABLE] > [SCHEMA_FILE]

$ bq mk --table [PROJECT_ID]:[NEW_DATASET].[TABLE] [SCHEMA_FILE]

2.- 运行 具有 LIMIT 0 并设置目标的查询 table。

bq query "SELECT * FROM [DATASET].[TABLE] LIMIT 0" --destination_table [NEW_DATASET].[TABLE]