将数据从 BigQuery 导出到本地 PostgreSQL/MySql 数据库

Posted

技术标签:

【中文标题】将数据从 BigQuery 导出到本地 PostgreSQL/MySql 数据库【英文标题】:Exporting data from BigQuery into a local PostgreSQL/MySql database 【发布时间】:2014-09-13 16:49:46 【问题描述】:

我是 BigQuery 和 BigQuery 的 Python API - 处女。

我的任务是:从google open dataset中提取数据使用BigQuery和Python API,将数据加载到mysql/PostgreSQL本地数据库(我PC上安装的那个)

我的看法(经过我 2 小时的研究)是: 将数据拉入本地 csv 文件 (using this kind of a sample code),然后将文件中的数据加载到数据库中。

这是否类似于执行任务的正确方式?

如果没有,您能否提供一些建议/指导?

提前致谢。

【问题讨论】:

这是正确的做法。 可以省略csv文件步骤吗?有点在路上? 您可以运行查询并处理输出developers.google.com/bigquery/docs/reference/v2/jobs/… 但导出为 CSV 会加快导入 SQL 数据库的速度。 我已经完成了。现在我要完善它,我会在这里发布解决方案。因为网上atm上没有这样的解决方案 【参考方案1】:

API 方法

您上面列出的步骤是正确的。总之,开发人员会:

    使用 BigQuery API 的“Jobs: insert”方法插入数据提取作业 - 这会导致将数据发送到 Google Cloud Storage 存储桶。

    使用 Google Cloud Storage API 的“Objects: get”方法在本地下载文件。

    为了额外的功劳,我将使用“Tables: get”方法查询原始 BQ 表以获取原始 BigQuery 表架构,并使用它来构建 MySQL 导入步骤的架构。

WEB UI方式

为什么不直接使用 Google BigQuery Web UI 运行您需要的任何查询,然后通过 UI 将数据导出到 Google Cloud Storage 存储桶中?为什么需要使用 Python?

【讨论】:

这是一个测试任务,让人们了解我有一些 Python 技能 :) 但是,感谢您的建议 :) 编辑:更新原始答案 好的 - 那么是的,您上面列出的步骤是正确的。总之,您将: 1. 使用 BigQuery API 的“Job: insert”方法插入数据提取作业 - 这会导致将数据发送到 Google Cloud Storage 存储桶。 2.使用谷歌云存储API的“Objects:get”方法将文件下载到本地。 3. 额外的功劳,我会使用“Tables:get”方法查询原始 BQ 表以获取原始 BigQuery 表架构,并使用它来构建 MySQL 导入步骤的架构。 太棒了!这意味着我是正确的:) 最后一件事。我是否需要支付任何费用才能启用 Google 存储桶??????我想不出一种免费的方式来访问它 好的,看来我需要为那个存储付费,而我现在没有任何东西。目前我只是将作业的输出 -> 查询 -> 执行到本地 csv 文件中。不确定这是最好的方法,但至少它是某种东西。你怎么看? BigQuery 结果创建一个新表,并在结果大小超过 10Mb 时创建数据页。因此,您可以查询该表,然后使用分页将每页结果保存在本地 CSV 文件中:developers.google.com/bigquery/docs/data#paging 和 ***.com/questions/16945399/paginating-bigquery

以上是关于将数据从 BigQuery 导出到本地 PostgreSQL/MySql 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将所有事件数据从 Firebase 导出到 BigQuery?

将数据从 firebase 导出到 bigQuery?

BigQuery json 特殊字符 UI 导出问题

从 Bigquery 导出到存储

将 10 个数据集(每个数据集有 80 个表)从 bigquery 导出到 google 存储的有效方法?

数据流:从 Pubsub RuntimeException 导出到 Bigquery