gpt4 book ai didi

python - 将 csv 从 gcs 迁移到 postgresql

转载 作者:太空狗 更新时间:2023-10-30 02:52:37 26 4
gpt4 key购买 nike

我正在尝试使用 Python 脚本将已从 BigQuery 导出的 Google Cloud Storage (GCS) 中的 csv 文件迁移到 PostgreSQL Google 云 sql 实例。

我希望使用 Google API 但在 the documentation 中找到了这个:

Importing CSV data using the Cloud SQL Admin API is not supported for PostgreSQL instances.

作为替代方案,我可以使用 psycopg2 库并将 csv 文件的行流式传输到 SQL 实例中。我可以通过三种方式做到这一点

  • 逐行:读取每一行,然后提交插入命令,然后提交
  • 批处理流:读取每一行,然后提交插入命令,然后在 10 行或 100 等之后提交。
  • 整个 csv:读取每一行并提交插入命令,然后仅在文档末尾提交。

我担心这些 csv 文件可能包含数百万行,并且对上述三个选项中的任何一个运行此过程对我来说都是一个坏主意。

我有什么选择?本质上,我在 BigQuery 中有一些原始数据,我们在导出到 GCS 之前对这些数据进行了一些预处理,以准备导入到 PostgreSQL 实例。我需要将经过预处理的数据从 BigQuery 导出到 PostgreSQL 实例。

这不是 question 的副本因为我更喜欢寻找通过 GCS 或直接将数据从 BigQuery 导出到 PostgreSQL 实例的解决方案。

最佳答案

您可以使用 Cloud Dataflow 执行导入过程正如@GrahamPolley 所建议的那样。确实,此解决方案涉及一些额外的工作(熟悉数据流、设置所有内容等)。即使需要额外的工作,这也是适合您情况的首选解决方案。但是,还有其他解决方案可用,我将在下面解释其中的一种。

要使用 Dataflow 设置迁移过程,本教程关于 exporting BigQuery to Google Datastore就是一个很好的例子


Cloud Dataflow 的替代解决方案

Cloud SQL for PostgreSQL 不支持从 .CSV 导入,但它支持 .SQL 文件。

The file type for the specified uri.
SQL: The file contains SQL statements.
CSV: The file contains CSV data. Importing CSV data using the Cloud SQL Admin API is not supported for PostgreSQL instances.

一个直接的解决方案是使用一些工具将 .CSV 文件转换为 .SQL(Google 没有提供我所知道的工具,但是有很多在线),然后导入到 PostgreSQL。

如果您想以更“程序化”的方式实现此解决方案,我建议使用 Cloud Functions , 这是我将如何尝试做的一个例子:

  1. 设置一个 Cloud Functions triggers when a file is uploaded to a Cloud Storage bucket
  2. 编写函数以获取上传的文件并检查它是否为.CSV。如果是,请使用 csv-to-sql API ( example of API here ) 将文件转换为 .SQL
  3. 将新文件存储在 Cloud Storage 中
  4. 导入到 PostgreSQL

关于python - 将 csv 从 gcs 迁移到 postgresql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52622905/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com