【发布时间】:2018-11-27 21:19:31
【问题描述】:
我正在使用此代码更新 Redshift 上的几条记录(每次运行大约 30.000 条记录)。
cur = conn.cursor(cursor_factory=RealDictCursor)
sql_string_update = """UPDATE my_table SET "outlier_reason" = {0} WHERE "id" = {1};"""
for id, row in df_ignored.iterrows():
sql_ = sql_string_update.format(row['outlier_reason'],id)
cur.execute(sql_)
conn.commit()
每次运行大约 30.000 个元素最多需要 2 小时的执行时间。
有没有办法加快这个查询?
【问题讨论】:
-
您正在数据库上运行 30.000 次更新,这不可能变得更快。我的建议是创建一个逻辑 1. 在 S3 中为
insert新行创建一个文件 2.delete需要更新的行。 3.使用copy将数据从S3加载到Redshift。如果您需要更多说明,请告诉我
标签: python-3.x amazon-redshift psycopg2