Я согласен с тем, что @ mdem7 предложил в комментарии, вставка 1-5 миллионов данных с использованием dataframe
не очень хорошая идея, и вы столкнетесь с проблемами производительности.
Лучше использовать S3
до Redshift
подход к нагрузке.Вот ваш код для выполнения команд Truncate
и Copy
.
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();
Есть еще больше способов сделать Copy
быстрее в Menifest
option , так чтоRedshift
может загружать данные параллельно.Надеюсь, это даст вам некоторую идею двигаться.