gpt4 book ai didi

Python 使用 psycopg2 将 DataFrame 写入 AWS redshift

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:03 25 4
gpt4 key购买 nike

我想每天更新 AWS 中的一个表,我打算做的是先使用 Python psycopg2 删除 AWS 中公共(public)表中的数据/行,然后将 python 数据帧数据插入该表。

import psycopg2
import pandas as pd

con=psycopg2.connect(dbname= My_Credential.....)
cur = con.cursor()

sql = """
DELETE FROM tableA
"""

cur.execute(sql)
con.commit()

上面的代码可以删除,但是我不知道怎么写python代码把My_Dataframe插入到tableA中。 TableA的大小在100万行到500万行之间,请指教。

最佳答案

我同意@mdem7 在评论中的建议,使用 dataframe 插入 1-5 百万数据根本不是一个好主意,您将面临性能问题。

最好使用 S3Redshift 加载方法。这是执行 TruncateCopy 命令的代码。

import psycopg2


def redshift():

conn = psycopg2.connect(dbname='database_name', host='888888888888****.u.****.redshift.amazonaws.com', port='5439', user='username', password='********')
cur = conn.cursor();

cur.execute("truncate table example;")

//Begin your transaction
cur.execute("begin;")
cur.execute("copy example from 's3://examble-bucket/example.csv' credentials 'aws_access_key_id=ID;aws_secret_access_key=KEY/KEY/pL/KEY' csv;")
////Commit your transaction
cur.execute("commit;")
print("Copy executed fine!")

redshift();

Menifest 中有更多方法可以使 Copy 更快 option ,这样 Redshift 就可以并行加载数据。希望这能给您一些搬家的想法。

关于Python 使用 psycopg2 将 DataFrame 写入 AWS redshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53891593/

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