【发布时间】:2019-03-08 10:33:43
【问题描述】:
我正在尝试使用 python 脚本将 csv 文件从已从 BigQuery 导出的 Google Cloud Storage (GCS) 迁移到 PostgreSQL Google cloud sql 实例。
我希望使用 Google API,但在 the documentation 中找到了这个:
PostgreSQL 实例不支持使用 Cloud SQL Admin API 导入 CSV 数据。
作为替代方案,我可以使用 psycopg2 库并将 csv 文件的行流式传输到 SQL 实例中。我可以通过三种方式做到这一点
- 逐行:读取每一行然后提交插入命令再提交
- 批处理流:读取每一行,然后提交插入命令,然后在 10 行或 100 行等之后提交。
- 整个 csv:读取每一行并提交插入命令,然后仅在文档末尾提交。
我担心这些 csv 文件可能包含数百万行,并且为上述三个选项中的任何一个运行此过程对我来说似乎是个坏主意。
我有什么选择? 本质上,我在 BigQuery 中有一些原始数据,我们在导出到 GCS 之前对其进行了一些预处理,以准备导入到 PostgreSQL 实例。 我需要将这些预处理数据从 BigQuery 导出到 PostgreSQL 实例。
这不是 question 的副本,因为我最好寻找将数据从 BigQuery 导出到 PostgreSQL 实例的解决方案,无论是通过 GCS 还是直接。
【问题讨论】:
-
为什么不使用 Cloud Dataflow?听起来是个不错的选择。
-
我也没有充分的理由。这应该是项目另一部分的快速而肮脏的测试的一部分。希望在没有建立数据流管道的情况下做到这一点。我以前从未使用过 Dataflow。
-
从它的声音来看,这将是一个非常简单的管道。好消息是它可以为您扩展,并为 BigQuery 和 CloudSQL 提供本机源/接收器。
-
作为替代方案,您可以将数据集加载到熊猫中,它有自己的方法将它们发送到像 psycopg2 这样的 SQL 连接。
标签: python postgresql csv google-cloud-platform google-bigquery