如何使用 pandas 或 python 将具有数百万行的表从 PostgreSQL 复制到 Amazon Redshift
Posted
技术标签:
【中文标题】如何使用 pandas 或 python 将具有数百万行的表从 PostgreSQL 复制到 Amazon Redshift【英文标题】:How to copy a table with millions of rows from PostgreSQL to Amazon Redshift using pandas or python 【发布时间】:2019-10-18 10:54:53 【问题描述】:使用 pandas 或 python 将表(具有数百万行)从一种类型的数据库复制到另一种类型的最佳方法是什么?
我在 PostreSQL 数据库中有一个包含数百万行的表,我想将它移动到 Amazon Redshift。使用 pandas 或 python 实现这一目标的最佳方法是什么?
【问题讨论】:
最好的方法是使用 Postgresql 工具在不使用 python 或 pandas 的情况下复制它:Copying PostgreSQL database to another server “最好”是什么意思? 【参考方案1】:Amazon Database Migration Service (DMS) 可以处理:
Using a PostgreSQL Database as a Source for AWS DMS - AWS Database Migration Service Using an Amazon Redshift Database as a Target for AWS Database Migration Service - AWS Database Migration Service或者,如果您想自己做:
将数据从 PostgreSQL 导出为 CSV 文件(可以 gzip 压缩) 将文件上传到 Amazon S3 在 Amazon Redshift 中创建目标表 在 Amazon Redshift 中使用COPY
命令将 CSV 文件加载到 Redshift 中
【讨论】:
我使用copy
命令。这实际上是在现有表中插入大量数据的最佳方式。【参考方案2】:
如果您使用 Aws 服务,最好使用 aws Glue,它使用 python 脚本进行 ETL操作,非常适合 Dynamo-->例如 Redshift。
如果您不只使用 Aws 服务,请尝试将 Redshift 数据导出为 csv? (我对数百万行执行此操作)并使用 c# 或其他方式创建迁移工具以读取 csv 文件并在转换行或其他方式后插入行 [检查您使用的数据库技术是否可以采用直接保存 csv,这样您就可以避免自己进行迁移]。
【讨论】:
以上是关于如何使用 pandas 或 python 将具有数百万行的表从 PostgreSQL 复制到 Amazon Redshift的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中创建具有两列作为元组或 Pandas 数据框的单个变量?
Python Pandas - 如何在具有不同级别数的索引上加入 DataFrames?
Python Pandas - 连接两个具有不同行数和列数的数据框