从Google BigQuery导出到CloudSQL?

21
我想将BigQuery中的数据(即报告)转储到CloudSQL数据库中,最好的编程方式是什么?
我意识到我可以通过运行BigQuery查询,将其下载为CSV,然后通过Cloud控制台上传来实现手动,但我希望以编程方式自动完成,最好使用Python/SQL。
1个回答

16

如果您想要转储整个表格,您可以使用BigQuery和Cloud SQL API的组合来实现。

BigQuery文档提供了一个Python API示例,用于将BigQuery表格提取到Cloud Storage中。

一旦数据在Cloud Storage中,您可以使用Cloud SQL Admin API将数据导入到MySQL表中。

如果您需要更精细的控制,您可以使用BigQuery API执行查询,获取结果,连接到Cloud SQL实例并插入数据。如果数据量很大,则性能不佳。

一个更复杂的方法是使用Dataflow将您感兴趣的数据写入Cloud Storage,并使用Cloud SQL API进行导入。

(出于我的好奇心,您能描述一下希望将数据存储在Cloud SQL而不是BigQuery的用例吗?这将有助于我们了解客户如何使用我们的产品以及我们可以改进的地方。)


1
我可以提供两个使用案例:1)您想要使用第三方工具或LOB应用程序,需要真正符合SQL标准的数据库(包括UPDATE、DELETE等)。在BQ中准备数据,然后导出到CloudSQL。2)您有来自MySQL的处理/分析/ETL脚本,这些脚本很复杂或昂贵,难以移植到BQ。在BQ中准备数据,在CloudSQL中进行一些处理,然后将其带回BQ。为了消除这种需求,BQ需要ANSI-SQL兼容性和存储过程。(我不建议任何一种...只是说一下。) - Michael Ames
10
谢谢,我们的使用案例是:我们希望在BigQuery中进行大数据的“数字精算”,并且我们想将每日报告(即基于BQ查询的更小的数据)输出到MySQL数据库中,以便我们可以轻松地通过Web仪表板/API来显示这些报告。 - p_mcp
另一个使用案例是希望访问比简单标识更灵活的连接,因为大表的交叉连接很快就会超过甚至 BigQuery 的计算能力。 - oulenz
4
如果这个仍然有效——我们是客户,使用CloudSQL作为API的基础,因为BigQuery无法快速索引或返回查询结果来支持API。 - Mathieson
对我来说也是一样的:我们有一些AI批量处理在BQ上,并且需要将结果加载到MySQL中进行服务。 - Thomas W.

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接