SQLalchemy在Redshift中运行缓慢

时间:2016-10-13 10:42:47

标签: python sqlalchemy

我在pandas Data Frame中有一个44k行的表。当我尝试将此表(或任何其他表)导出到Redshift数据库时,该过程需要很长时间。我正在使用sqlalchemy创建一个像这样的conexion:

import sqlalchemy as sal
engine = sal.create_engine('redshift+psycopg2://blablamyhost/myschema')

我用来导出表的方法是Pandas to_sql,如下所示:

dat.to_sql(name="olap_comercial",con=eng,schema="monetization",index=False,if_exists="replace" ,dtype={"description":sal.types.String(length=271),"date_postoffer":sal.types.DATE})

这么慢是否正常?我说的时间超过15分钟。

1 个答案:

答案 0 :(得分:1)

是的,这种情况很慢(对于大型集群而言可能较慢)。对于Redshift,常规的sql插入(由sqlalchemy生成)非常慢,应该避免使用。

您应该考虑使用S3作为中间临时层,您的数据流将是: dataframe-> S3->红移

理想情况下,您还应该在上传到S3之前对数据进行gzip,这也会提高您的效果。

这可以使用BOTO3和psycopg2从python脚本进行协调 https://boto3.readthedocs.io/en/latest/