Skip to main content
提供类似表的接口,可对 Google Cloud Storage 中的数据执行 SELECTINSERT。需要 Storage Object User IAM role 这是 s3 表函数 的别名。 如果你的集群中有多个副本,可以改用 s3Cluster 函数 (可与 GCS 配合使用) 来并行执行插入操作。

语法

GCSGCS 表函数通过 GCS XML API 和 HMAC 密钥与 Google Cloud Storage 集成。 有关端点和 HMAC 的更多信息,请参阅 Google 互操作性文档

参数

GCSGCS 路径格式如下,因为 Google XML API 的端点与 JSON API 不同:
而不是 ~~https://storage.cloud.google.com~~。
参数也可以通过命名集合传递。在这种情况下,urlformatstructurecompression_method 的用法相同,并且还支持一些额外参数:

返回值

一个具有指定结构的表,用于读取指定文件中的数据或向其中写入数据。

示例

从 GCS 文件 https://storage.googleapis.com/my-test-bucket-768/data.csv 对应的表中选取前两行:
类似,不过是来自使用 gzip 压缩方法的文件:

用法

假设我们在 GCS 上有多个文件,其 URI 如下: 统计文件名以 1 到 3 结尾的文件中的行数:
统计这两个目录中所有文件的总行数:
如果文件列表中包含带前导零的数字范围,请对每一位数字分别使用花括号,或使用 ?
统计名为 file-000.csvfile-001.csv、…、file-999.csv 的文件中的总行数:
向文件 test-data.csv.gz 中插入数据:
将现有表中的数据插入文件 test-data.csv.gz
可以使用 Glob ** 递归遍历目录。参见下面的示例,它会从 my-test-bucket-768 目录中递归拉取所有文件:
以下内容会递归地从 my-test-bucket 目录下任意文件夹中的所有 test-data.csv.gz 文件获取数据:
对于生产环境,建议使用命名集合。示例如下:

分区写入

如果在向 GCS 表插入数据时指定了 PARTITION BY 表达式,系统会为每个分区值分别创建一个文件。将数据拆分到不同文件中,有助于提升读取操作的效率。 示例
  1. 在 key 中使用分区 ID 会创建单独的文件:
因此,数据会写入三个文件:file_x.csvfile_y.csvfile_z.csv
  1. 在 存储桶 名称中使用分区 ID,会在不同的 存储桶 中创建文件:
因此,数据会被写入不同存储桶中的三个文件:my_bucket_1/file.csvmy_bucket_10/file.csvmy_bucket_20/file.csv
最后修改于 2026年7月3日