Python записывает DateFrame в красное смещение AWS с помощью psycopg2 - PullRequest
0 голосов
/ 22 декабря 2018

Я хочу обновлять таблицу в AWS ежедневно, и я планирую сначала удалить данные / строки в общедоступной таблице в AWS с помощью Python psycopg2, а затем вставить данные таблицы данных 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 в таблицу A.Размер таблицы составляет от 1 до 5 миллионов строк, пожалуйста, сообщите.

1 Ответ

0 голосов
/ 23 декабря 2018

Я согласен с тем, что @ 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 может загружать данные параллельно.Надеюсь, это даст вам некоторую идею двигаться.

...