使用 Storage Write API (REST)

本文档介绍如何使用 BigQuery Storage Write API (REST)(之前称为旧版 tabledata.insertAll 方法)将数据流式传输到 BigQuery。

对于新项目,我们建议使用 BigQuery Storage Write API (gRPC),而不是 Storage Write API (REST)。Storage Write API (gRPC) 价格更低,功能更强大,包括“仅传送一次”语义和将数据流式传输到 Apache Iceberg 受管表。如果您要将现有项目从 Storage Write API (REST) 迁移到 Storage Write API (gRPC),我们建议您选择默认流。Storage Write API (REST) 仍然完全受支持。

准备工作

  1. 确保您对包含目标表的数据集具有写入权限。除非使用的是模板表,否则在开始向目标表写入数据之前该表就必须存在。如需详细了解模板表,请参阅使用模板表自动创建表

  2. 查看流式传输数据的配额政策

  3. 验证是否已为您的 Google Cloud 项目启用结算功能

  4. 不支持通过免费层级流式传输。如果您在未启用结算功能的情况下尝试使用流式传输,则会收到以下错误:BigQuery: Streaming insert is not allowed in the free tier.

  5. 授予为用户提供执行本文档中的每个任务所需权限的 Identity and Access Management (IAM) 角色。

所需权限

如需将数据流式传输到 BigQuery 中,您需要拥有以下 IAM 权限:

  • bigquery.tables.updateData(可让您在表中插入数据)
  • bigquery.tables.get(可让您获取表元数据)
  • bigquery.datasets.get(可让您获取数据集元数据)
  • bigquery.tables.create(如果您使用模板表自动创建表,则为必需)

以下预定义 IAM 角色都包含将数据流式传输到 BigQuery 中所需的权限:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin

如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅预定义的角色和权限

将数据流式插入到 BigQuery

C#

试用此示例之前,请按照 BigQuery 快速入门:使用客户端库中的 C# 设置说明进行操作。 如需了解详情,请参阅 BigQuery C# API 参考文档

如需向 BigQuery 进行身份验证,请设置应用默认凭证。如需了解详情,请参阅为客户端库设置身份验证


using Google.Cloud.BigQuery.V2;

public class BigQueryTableInsertRows
{
    public void TableInsertRows(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id",
        string tableId = "your_table_id"
    )
    {