从 Cloud Storage 加载数据简介

本页面提供了将 Cloud Storage 中的数据加载到 BigQuery 中的概览。

概览

从 Cloud Storage 将数据加载到 BigQuery 时,您的数据可以采用以下任意一种格式:

  • 英文逗号分隔值 (CSV)
  • JSON(以换行符分隔)
  • Avro
  • Parquet
  • ORC
  • Cloud Datastore 导出文件
  • Cloud Firestore 导出文件

BigQuery Data Transfer Service 支持将 Cloud Storage 中的数据定期加载到 BigQuery。

BigQuery 支持从以下任意一种 Cloud Storage 存储类别加载数据:

  • 多区域
  • 单区域
  • Nearline
  • Coldline

位置注意事项

在选择数据的位置时,请考虑以下事项:

  • 共置 Cloud Storage 存储分区,以加载数据。
    • 如果您的 BigQuery 数据集位于多区域位置,则包含您要加载的数据的 Cloud Storage 存储分区必须位于同一位置的区域或多区域存储分区中。例如,如果您的 BigQuery 数据集位于 EU,则 Cloud Storage 存储分区必须位于 EU 的区域或多区域存储分区中。
    • 如果您的数据集位于区域位置,则您的 Cloud Storage 存储分区必须是同一位置的区域存储分区。例如,如果您的数据集位于东京区域,则您的 Cloud Storage 存储分区必须是位于东京的区域存储分区。
    • 例外情况:如果您的数据集位于 US 多区域位置,则可以从任何区域或多区域位置的 Cloud Storage 存储分区加载数据。
  • 制定数据管理计划。
    • 如果您选择区域存储资源(如 BigQuery 数据集或 Cloud Storage 存储分区),请制定按地理位置管理数据的计划。

如需详细了解 Cloud Storage 位置,请参阅 Cloud Storage 文档中的存储分区位置

在不同位置之间移动 BigQuery 数据

您无法在创建数据集后更改其位置,但可以创建数据集的副本。您无法将数据集从一个位置移动到另一个位置,但您可以手动移动(重新创建)数据集

复制数据集

要查看复制数据集的步骤(包括跨区域),请参阅复制数据集

移动数据集

要手动将数据集从一个位置移动到另一个位置,请按照以下流程操作:

  1. 从 BigQuery 表中将数据导出到数据集所在位置的单区域或多区域 Cloud Storage 存储分区中。例如,如果您的数据集位于 EU 多区域位置,请将您的数据导出到位于 EU 的区域或多区域存储分区中。

    从 BigQuery 导出数据不会产生费用,但是将导出的数据存储在 Cloud Storage 中会产生费用。BigQuery 导出需要遵循与导出作业相关的限制。

  2. 将数据从 Cloud Storage 存储分区复制或移动到新位置的区域或多区域存储分区中。例如,如果要将数据从 US 多区域位置移动到东京区域位置,则会将数据转移到位于东京的区域存储分区。如需了解如何转移 Cloud Storage 对象,请参阅 Cloud Storage 文档中的重命名、复制和移动对象

    请注意,在不同区域之间转移数据会在 Cloud Storage 中产生网络出站费用

  3. 将数据转移到新位置的 Cloud Storage 存储分区后,(在新位置)创建一个新的 BigQuery 数据集。然后,将数据从 Cloud Storage 存储分区加载到 BigQuery 中。

    您不需要为将数据加载到 BigQuery 而付费,但在删除数据或存储分区之前,您需要为在 Cloud Storage 中存储数据支付费用。加载完毕后,您还需要为在 BigQuery 中存储数据支付费用。将数据加载到 BigQuery 需要遵循与加载作业相关的限制。

如需详细了解如何使用 Cloud Storage 存储和转移大型数据集,请参阅使用 Cloud Storage 处理大数据

限制

将数据从 Cloud Storage 存储分区加载到 BigQuery 时,您受限于以下限制:

  • 如果数据集的位置设置为 US 以外的值,则区域或多区域 Cloud Storage 存储分区必须与数据集位于相同的区域。

Cloud Storage 源数据可能还会受到其他限制,具体取决于源数据的格式。如需了解详情,请参阅以下内容:

检索 Cloud Storage URI

要从 Cloud Storage 数据源加载数据,您必须提供 Cloud Storage URI。

Cloud Storage URI 包含存储分区名称和对象(文件名)。例如,如果 Cloud Storage 存储分区名为 mybucket,并且数据文件名为 myfile.csv,则存储分区 URI 为 gs://mybucket/myfile.csv。如果数据被分成多个文件,您可以在 URI 中使用通配符。如需了解详情,请参阅 Cloud Storage 请求 URI

BigQuery 不支持在初始双斜杠之后添加多个连续斜杠的源 URI。Cloud Storage 对象名称可包含多个连续斜杠(“/”)字符。但是,BigQuery 会将多个连续斜杠转换为单个斜杠。例如,虽然以下源 URI 在 Cloud Storage 中有效,但在 BigQuery 中无效:gs://bucket/my//object//name

要检索 Cloud Storage URI,请按以下步骤操作:

  1. 打开 Cloud Storage 控制台

    Cloud Storage 控制台

  2. 浏览到包含源数据的对象(文件)的位置。

  3. 在 Cloud Storage 控制台顶部,找到并记下对象的路径。要构成 URI,请将 gs://bucket/file 替换为适当的路径,例如 gs://mybucket/myfile.json, 其中“bucket”是 Cloud Storage 存储分区名称,“file”是包含数据的对象(文件)的名称。

所需权限

在将数据加载到 BigQuery 时,您需要拥有运行加载作业的权限,以及将数据加载到新的或现有的 BigQuery 表和分区的权限。如果要从 Cloud Storage 加载数据,您还需要拥有访问您的数据所在的存储分区的权限。

BigQuery 权限

将数据加载到 BigQuery 至少需要以下权限。如果要将数据加载到新的表或分区中,或者要覆盖或附加到表或分区,则必须具有这些权限。

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create

以下预定义的 Cloud IAM 角色包含 bigquery.tables.createbigquery.tables.updateData 权限:

  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

以下预定义的 Cloud IAM 角色包含 bigquery.jobs.create 权限:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

此外,如果用户具有 bigquery.datasets.create 权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner 访问权限。 借助 bigquery.dataOwner 访问权限,用户可以通过加载作业在数据集中创建和更新表。

如需详细了解 BigQuery 中的 Cloud IAM 角色和权限,请参阅访问权限控制

Cloud Storage 权限

为从 Cloud Storage 存储分区加载数据,您必须拥有 storage.objects.get 权限。如果要使用 URI 通配符,您还必须具有 storage.objects.list 权限。

可以通过授予预定义的 Cloud IAM 角色 storage.objectViewer 来提供 storage.objects.getstorage.objects.list 权限。

Cloud Storage 访问日志和存储日志

Cloud Storage 提供 CSV 格式的访问日志和存储日志文件,这些文件可以直接导入到 BigQuery 以执行分析。如需详细了解如何加载和分析 Cloud Storage 日志,请参阅 Cloud Storage 文档中的访问权限日志和存储日志

Cloud Storage URI 的通配符支持

如果您的 Cloud Storage 数据分为共用一个通用基本名称的多个文件,则在加载数据时,您可以在 URI 中使用通配符。

要在 Cloud Storage URI 中添加通配符,可在基本名称后附加星号 (*)。例如,如果您有两个文件,名为 fed-sample000001.csvfed-sample000002.csv,则存储分区 URI 为 gs://mybucket/fed-sample*。此通配符 URI 随后可用于控制台、经典版界面、CLI、API 或客户端库。

存储分区中的对象(文件名)仅可使用一个通配符。通配符可以出现在对象名称内或对象名称末尾。不支持在存储分区名称中附加通配符。

对于 Google Cloud Datastore 导出文件,您只能指定一个 URI,且该 URI 必须以 .backup_info.export_metadata 结尾。

在以下情况下,允许使用 * 通配符:

  • 创建关联到 Cloud Datastore 或 Cloud Firestore 导出文件的外部表
  • 从 Cloud Storage 加载 Cloud Datastore 或 Cloud Firestore 导出数据

后续步骤

如需了解如何将 Cloud Storage 中的数据加载到 BigQuery,请参阅对应于您的数据格式的文档:

如需了解如何将 Cloud Storage 中的数据定期加载到 BigQuery,请参阅 Cloud Storage 转移作业

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面