2016-01-24 19 views
7

Amazon RedshiftのGetting Started Guideでは、データがAmazon S3から取得され、SQLWorkbench/Jを使用してAmazon Redshift Clusterにロードされます。私は、クラスタに接続し、Boto3を利用してサンプルデータをクラスタにロードするのと同じプロセスを模倣したいと思います。Python Boto3経由でAmazon Redshiftにデータを読み込むには?

RedshiftのBoto3's documentationでは、私はAmazon Redshiftクラスタにデータをアップロードする方法を見つけることができません。

私は赤方偏移は、次のコードでBoto3を利用して接続することができました:

client = boto3.client('redshift') 

しかし、私は私が道を、テーブルを作成したり、Amazonで赤方偏移にデータをアップロードするかできるようになるかの方法はよく分かりませんそれはtutorial with SQLWorkbenchJで行われます。

答えて

4

リンク先のチュートリアルの手順4に戻ります。クラスタのURLを取得する方法を示す場所を参照してください。 PostgreSQLドライバを使用してそのURLに接続する必要があります。 Boto3などのAWS SDKは、AWS APIへのアクセスを提供します。 RDS上のPostgreSQLデータベースに接続するのと同じように、PostgreSQL API経由でRedshiftに接続する必要があります。

+0

感謝を書くことboto3/psycopg2を使用しました!私は今、SQLAlchemyの代わりにSQLWorkbenchJを利用する方法を見つけようとしています。これは、私がこの問題を編集したり、新しい質問を作成したりするのが難しいです。 – Chris

+0

新しい質問がある場合は、新しい質問を作成してください。既存の質問を編集して新しい質問をしないでください。 –

+0

Redshift用のAginity Workbenchを使用して、クラスタに接続します。はるかに優れたUIと機能を備えており、AWSの人々にも推奨されています。 – Paladin

10

右、psycopg2 COPYコマンドを実行する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() 

私はCSV_Loader_For_Redshift

関連する問題