2016-01-24 32 views
7

W Amazon Redshift's Getting Started Guide dane są pobierane z Amazon S3 i ładowane do Amazon Redshift Cluster za pomocą SQLWorkbench/J. Chciałbym naśladować ten sam proces łączenia się z klastrem i ładowania przykładowych danych do klastra z wykorzystaniem Boto3.Jak ładować dane do Amazon Redshift przez Python Boto3?

Jednak w wersji Boto3's documentation funkcji Redshift nie mogę znaleźć metody, która umożliwiłaby przesyłanie danych do klastra Amazon Redshift.

byłem w stanie połączyć się z Redshift wykorzystując Boto3 z następującego kodu:

client = boto3.client('redshift') 

Ale nie jestem pewien, co metoda pozwoli mi albo tworzenia tabel lub przesyłanie danych do Amazon redshifcie drogę odbywa się to w tutorial with SQLWorkbenchJ.

Odpowiedz

4

Powróć do kroku 4 tego połączonego kursu. Sprawdź, gdzie pokazuje, jak uzyskać adres URL klastra? Musisz połączyć się z tym adresem URL za pomocą sterownika PostgreSQL. Zestawy SDK AWS, takie jak Boto3, zapewniają dostęp do interfejsu API AWS. Musisz połączyć się z Redshift poprzez PostgreSQL API, tak jak byś połączył się z bazą danych PostgreSQL na RDS.

+0

Dzięki! Teraz próbuję dowiedzieć się, jak wykorzystać SQLAlchemy zamiast SQLWorkbenchJ, z którego mam trudności z wykorzystaniem (mogę edytować to pytanie lub utworzyć nowe). – Chris

+0

Jeśli masz nowe pytanie, utwórz nowe pytanie. Nie edytuj istniejącego pytania, aby poprosić o coś nowego. –

+0

Użyj Aginity Workbench dla Redshift do połączenia z klastrem. Ma znacznie lepszy interfejs użytkownika i funkcje, a także jest polecany przez użytkowników AWS. – Paladin

10

Po prawej, potrzebny jest moduł Pythona do wykonania polecenia COPY.

Mój kod wygląda następująco:

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() 

użyłem boto3/psycopg2 napisać CSV_Loader_For_Redshift