如何将多个文件上传到谷歌云存储桶作为交易

时间:2013-01-30 16:35:10

标签: google-bigquery google-cloud-storage

使用案例

将多个文件上传到云存储桶,然后将该数据用作bigquery导入的源。使用存储桶的名称作为元数据来驱动数据应该进入哪个分片表。

问题:

为了防止部分导入bigquery表,理想情况下,我想执行以下操作,

  • 将文件上传到暂存存储桶
  • 确认所有文件都已正确上传
  • 将暂存存储桶重命名为其最终名称(例如,gs:// 20130112)
  • 触发bigquery导入以将存储桶加载到分片表

由于gsutil似乎不支持存储桶重命名,有哪些替代方法可以实现此目的?

2 个答案:

答案 0 :(得分:5)

Google云端存储不支持重命名存储桶,或者更常见的是一次以多种方式对多个对象进行操作。

如果您主要担心的是所有对象都已正确上传(而不是确保只有上传所有对象后才能看到存储桶内容),gsutil cp支持 - 如果任何对象无法上传,它将报告无法上传和退出非零状态的号码。

因此,可能的实现是运行gsutil cp以上载所有文件的脚本,然后在创建BigQuery表加载作业之前检查gsutil退出状态。

Mike Schwartz,谷歌云存储团队

答案 1 :(得分:1)

Google云端存储中的对象名称实际上是平的;从服务的角度来看,'/'只是名称中的另一个字符。文件夹抽象由客户端提供,如gsutil和各种GUI工具。重命名文件夹要求客户端对文件夹中的每个对象请求一系列复制和删除操作。没有原子方法来重命名文件夹。

Mike Schwartz,谷歌云存储团队