将大型BigQuery结果保存到另一个项目的BigQuery

时间:2017-09-14 10:36:52

标签: google-bigquery google-cloud-platform

我需要在一个项目的BigQuery上运行连接查询,这可能会返回大量数据(可能不适合虚拟机的记忆),然后将结果保存在另一个项目的BigQuery中。 / p>

有没有一种简单的方法可以在不加载VM中的数据的情况下执行此操作,因为数据大小可能会有所不同,而VM可能没有足够的内存来加载它?

2 个答案:

答案 0 :(得分:2)

一种方法是绕过VM进行操作,改为使用Google Cloud Storage。

该过程将如下所示

  1. 创建两个项目都可以访问的GS存储桶
  2. 源项目 - 将表导出到GS存储桶(这可以从Web界面进行,非常确定CLI工具可以执行此操作)
  3. 目标项目 - 从GS存储桶中的文件创建新表

答案 1 :(得分:1)

将查询结果保存到任何项目中的表 - 您不需要先将其保存到VM,只需设置正确的目标属性,当然您需要对包含该表的数据集具有写权限!

目的地属性可能因您使用的client tool而异 例如,如果您使用的是REST API的jobs.insert,则应设置以下属性

  

configuration.query.destinationTable 嵌套对象[可选]
  描述应存储查询结果的表。如果不   目前,将创建一个新表来存储结果。这个   必须为超过最大值的大结果设置属性   响应大小。

     

configuration.query.destinationTable.datasetId string [必填]
  该   包含此表的数据集的ID。

     

configuration.query.destinationTable.projectId string [必需]
  该   包含此表的项目的ID。

     

configuration.query.destinationTable.tableId string [必需]
  身份证   的表。 ID必须仅包含字母(a-z,A-Z),数字   (0-9)或下划线(_)。最大长度为1,024个字符。