DJ3*_*319 6 python csv postgresql google-bigquery google-cloud-platform
我正在尝试使用 python 脚本将 csv 文件从从 BigQuery 导出的 Google Cloud Storage (GCS) 迁移到 PostgreSQL Google Cloud sql 实例。
我希望使用 Google API,但在文档中发现了这一点:
PostgreSQL 实例不支持使用 Cloud SQL Admin API 导入 CSV 数据。
作为替代方案,我可以使用psycopg2库并将 csv 文件的行流式传输到 SQL 实例中。我可以通过三种方式做到这一点
我担心的是这些 csv 文件可能包含数百万行,并且为上述三个选项中的任何一个运行此过程对我来说似乎是一个坏主意。
我有哪些选择?本质上,我在 BigQuery 中有一些原始数据,我们在导出到 GCS 之前对其进行了一些预处理,以准备导入到 PostgreSQL 实例。我需要将此预处理数据从 BigQuery 导出到 PostgreSQL 实例。
这不是这个问题的重复,因为我最好寻找将数据从 BigQuery 导出到 PostgreSQL 实例的解决方案,无论是通过 GCS 还是直接。
您可以按照 @GrahamPolley 的建议使用Cloud Dataflow执行导入过程。确实,这个解决方案涉及一些额外的工作(熟悉数据流、设置一切等)。即使需要额外的工作,这也将是适合您情况的首选解决方案。但是,还有其他解决方案可用,我将在下面解释其中之一。
要使用 Dataflow 设置迁移过程,有关将 BigQuery 导出到 Google Datastore 的教程就是一个很好的示例
Cloud Dataflow 的替代解决方案
Cloud SQL for PostgreSQL 不支持从 a 导入.CSV,但支持.SQL文件。
指定 uri 的文件类型。
SQL:该文件包含 SQL 语句。
CSV:该文件包含 CSV 数据。PostgreSQL 实例不支持使用 Cloud SQL Admin API 导入 CSV 数据。
一种直接的解决方案是使用某种工具将.CSVfilest 转换为.SQL(据我所知,Google 没有提供工具,但网上有很多),然后导入到 PostgreSQL。
如果您想以更“编程”的方式实现此解决方案,我建议使用Cloud Functions,以下是我尝试执行此操作的示例:
.CSV. 如果是,请使用 csv-to-sql API(此处为 API 示例)将文件转换为.SQL