将数据加载到分区表中

本文档介绍了如何将数据加载到分区表中。

将数据写入特定分区

您可以使用带有分区修饰器的 bq load 命令将数据加载到特定分区。以下示例会将数据附加到现有表的 20160501(2016 年 5 月 1 日)分区中(假设该表已按日期分区):

bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv

您还可以将查询结果写入特定分区:

bq query \
  --use_legacy_sql=false  \
  --destination_table='my_table$20160501' \
  --append_table=true \
  'SELECT * FROM my_dataset.another_table'

通过注入时间分区,您可以使用此方法将较旧的数据加载到与最初创建数据的时间对应的分区中。

您也可以使用此方法来根据时区进行调整。默认情况下,注入时间分区基于世界协调时间 (UTC)。如果您希望分区时间与特定时区匹配,可以使用分区修饰器来抵消 UTC 注入时间。例如,如果您使用的是太平洋标准时间 (PST),则可以使用相应的分区修饰器 $20160501 将太平洋标准时间 2016 年 5 月 1 日生成的所有数据加载到该日期的分区中。

对于时间单位列和整数范围分区表,修饰器中指定的分区 ID 必须与写入的数据匹配。例如,如果表基于 DATE 列进行分区,则修饰器必须与该列中的值匹配。否则将发生错误。但是,如果您事先知道数据位于单个分区中,指定分区修饰器可以提高写入性能。

上述示例将数据附加到某个分区。如需改为覆盖分区中的数据,您必须为每个命令添加不同的标志,即 bq load --replace=true ...bq query --append_table=false ...。如需详细了解这些命令中的标志,请参阅 bq loadbq query

如需详细了解如何加载数据,请参阅将数据加载到 BigQuery 简介

将数据流式传输到分区表中

如需了解如何使用 BigQuery Storage Write API 将数据流式传输到分区表,请参阅时间单位列分区

后续步骤

如需详细了解分区表的操作,请参阅: