Как загрузить данные в Amazon Redshift через Python Boto3?
в Amazon Redshift Начало Работы Руководство, данные извлекаются из Amazon S3 и загружаются в кластер Amazon Redshift с использованием SQLWorkbench/J. я хотел бы имитировать тот же процесс подключения к кластеру и загрузки образцов данных в кластер с использованием Boto3.
однако в Boto3 это Redshift, я не могу найти метод, который позволил бы мне загружать данные в кластер Amazon Redshift.
я смог подключиться к Redshift, используя Boto3 со следующим кодом:
client = boto3.client('redshift')
но я не уверен, какой метод позволит мне создавать таблицы или загружать данные в Amazon Redshift так, как это делается в учебник с SQLWorkbenchJ.
2 ответов
вернитесь к шагу 4 в этом уроке вы связаны. Увидеть, где он показывает вам, как получить URL-адрес кластера? Вы должны подключиться к этому URL-адресу с помощью драйвера PostgreSQL. Такие SDK AWS, как Boto3, предоставляют доступ к API AWS. Вам нужно подключиться к Redshift через API PostgreSQL, как и к базе данных PostgreSQL в RDS.
правильно, вам нужно psycopg2
модуль Python для выполнения команды копирования.
мой код выглядит так:
import psycopg2
#Amazon Redshift connect string
conn_string = "dbname='***' port='5439' user='***' password='***' host='mycluster.***.redshift.amazonaws.com'"
#connect to Redshift (database should be open to the world)
con = psycopg2.connect(conn_string);
sql="""COPY %s FROM '%s' credentials
'aws_access_key_id=%s; aws_secret_access_key=%s'
delimiter '%s' FORMAT CSV %s %s; commit;""" %
(to_table, fn, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY,delim,quote,gzip)
#Here
# fn - s3://path_to__input_file.gz
# gzip = 'gzip'
cur = con.cursor()
cur.execute(sql)
con.close()
Я boto3/psycopg2 писать CSV_Loader_For_Redshift