2016-01-24 21 views
7

Amazon Redshift'in Getting Started Guide sürümünde, veriler Amazon S3'ten çekilir ve SQLWorkbench/J kullanılarak bir Amazon Redshift Cluster'a yüklenir. Kümeye bağlanma ve örnek verileri Boto3 kullanarak kümeye yükleme işlemlerini taklit etmek istiyorum. Ancak, Redshift'in Boto3's documentation numaralı sürümünde, Amazon Redshift kümesine veri yüklememe izin verecek bir yöntem bulamıyorum.Python Boto3 ile Amazon Redshift'e Veri Nasıl Yüklenir?

Ben Redshift aşağıdaki kodla Boto3 kullanan ile bağlanmak mümkün oldum:

client = boto3.client('redshift') 

Ama bana Amazon Redshift yol verilerini tablo oluşturmak veya yüklemek için ya izin verecek hangi yöntemi emin değilim tutorial with SQLWorkbenchJ'da bitti.

cevap

4

Bağladığınız bu öğreticide 4. adıma geri dönün. Kümenin URL'sini nasıl alacağınızı gösterir misiniz? Bu URL'ye bir PostgreSQL sürücüsü ile bağlanmanız gerekir. Boto3 gibi AWS SDK'ları AWS API'sine erişim sağlar. Bir PostgreSQL API'sı üzerinden Redshift'e bağlanmanız gerekir, tıpkı RDS'deki bir PostgreSQL veritabanına bağlandığınız gibi.

+0

Teşekkür yazmak için boto3/psycopg2 kullanılan! SQLAlchemy yerine SQLWorkbenchJ kullanarak nasıl kullanılacağını anlamaya çalışıyorum, ki kullanmakta zorluk çekiyorum (bu soruyu düzenleyebilir veya yeni bir tane oluşturabilirim). – Chris

+0

Yeni bir sorunuz varsa, yeni bir soru oluşturun. Lütfen yeni bir şey sormak için mevcut bir soruyu düzenlemeyin. –

+0

Kümeye bağlanmak için Redshift için Aginity Workbench kullanın. Çok daha iyi UI ve özellikleri var ve AWS millet tarafından da önerilir. – Paladin

10

Doğru, COPY komutunu yürütmek için psycopg2 Python modülüne ihtiyacınız vardır.

Benim kod şöyle görünür:

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

Ben CSV_Loader_For_Redshift