从 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 权限

如果您要将数据从 Cloud Storage 加载到 BigQuery 中,您必须在项目级层或数据集级层拥有 bigquery.dataOwnerbigquery.dataEditor 角色。这两个角色均允许用户和组将数据加载到新表中,或者改写或附加到现有表。

用户或组在项目级层拥有相应角色之后,即有权将数据加载到项目中每个数据集的表中。如果为用户或群组在数据集级层授予相应角色,则他们只能将数据加载到该数据集的表中。

如需详细了解数据集访问权限控制,请参阅控制对数据集的访问权限。要详细了解 BigQuery 中的 IAM 角色,请参阅访问权限控制

Cloud Storage 权限

为了从 Cloud Storage 存储分区加载数据,您必须在项目级层或对相应的单个存储分区拥有 storage.objects.get 权限。如果您要使用 URI 通配符,还必须拥有 storage.objects.list 权限。

可以授予预定义的 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 转移

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

发送以下问题的反馈:

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