从 Google BigQuery 导出到 CloudSQL?
Posted
技术标签:
【中文标题】从 Google BigQuery 导出到 CloudSQL?【英文标题】:Export from Google BigQuery into CloudSQL? 【发布时间】:2016-07-27 01:25:10 【问题描述】:我想将 BigQuery 中的数据(即报告)转储到 CloudSQL 数据库中,以编程方式实现此目的的最佳方法是什么?
我意识到我可以通过运行 BigQuery 查询来做到这一点 manually,将其下载为 CSV,然后通过云控制台上传,但我想以编程方式执行此操作,最好使用 Python/SQL。
【问题讨论】:
【参考方案1】:如果您想转储整个表,可以结合使用 BigQuery 和 Cloud SQL API 来实现。
BigQuery 文档 has an API example in python 用于将 BigQuery 表提取到 Cloud Storage。
数据进入 Cloud Storage 后,您可以使用 Cloud SQL Admin API 将数据导入 mysql 表中。
如果您需要更精细的控制,可以使用 BigQuery API 来执行查询、获取结果、连接到 Cloud SQL 实例并插入数据。如果数据量很大,这将不会表现得那么好。
更复杂的方法是使用Dataflow将您感兴趣的数据写入Cloud Storage并使用Cloud SQL API将其导入。
(出于我自己的好奇,您能否描述一下在 Cloud SQL 中而不是 BigQuery 中需要数据的用例?它将帮助我/我们了解客户如何使用我们的产品以及我们可以改进的地方。)
【讨论】:
我可以提供两个用例:1) 您想使用需要真正符合 SQL 的数据库(使用 UPDATE、DELETE 等)的第 3 方工具或 LOB 应用程序。在 BQ 中准备数据,然后导出到 CloudSQL。 2) 你有来自 MySQL 的处理/分析/ETL 脚本,这些脚本移植到 BQ 很复杂或很昂贵。在 BQ 中准备数据,在 CloudSQL 中进行一些处理,然后将其带回 BQ。为了消除这种需要,BQ 需要 ANSI-SQL 兼容性和存储过程。 (我也不推荐......只是说。) 谢谢,我们的用例是:我们想在 BigQuery 中对大数据进行“数字运算”,并且我们想将每日报告(即基于 BQ 查询的更小的数据)输出到 MySQL 数据库中这样我们就可以通过 Web 仪表板/API 轻松显示这些内容 另一个用例是希望获得比简单标识更灵活的连接,因为大表的交叉连接很快就会压倒 BigQuery 的强大功能。 如果这仍然有效 - 我们是客户这样做是为了使用 CloudSQL 作为我们的 API 的基础,因为 BigQuery 无法足够快地索引或返回查询来支持 API。以上是关于从 Google BigQuery 导出到 CloudSQL?的主要内容,如果未能解决你的问题,请参考以下文章
将 10 个数据集(每个数据集有 80 个表)从 bigquery 导出到 google 存储的有效方法?
无法将表从 BigQuery 导出到 Google Cloud Storage