На самом деле причина, по которой вы не видите данные в Redshift, заключается в том, что вы не включили автоматическую фиксацию, следовательно, ваши команды выполнены успешно, но она copy
передает данные в Redshift
, но не фиксирует. Следовательно, вы не видите данные, когда вы select
запрашиваете console
или WorkBench/J
.
Вы должны явно начать и совершить транзакцию.
Я просто даю вам простой рабочий пример.
import psycopg2
def redshift():
conn = psycopg2.connect(dbname='**_dev_**', host='888888888888****.u.****.redshift.amazonaws.com', port='5439', user='******', password='********')
cur = conn.cursor();
//Begin your transaction
cur.execute("begin;")
cur.execute("copy kpi_kpireport from 's3://clab-migration/kpi.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();
Теперь, если вы запустите код выше, вы увидите скопированные данные.
Если вы удалите две строки из приведенного выше кода, cur.execute("begin;")
, cur.execute("commit;")
запустите его, даже если он успешно выполнен без ошибок, вы не увидите данные в Redshift.