Chr*_*ris 11 python amazon-s3 amazon-web-services amazon-redshift boto3
在Amazon Redshift的入门指南中,数据从Amazon S3中提取并使用SQLWorkbench/J加载到Amazon Redshift群集中.我想模仿连接到集群的相同过程,并使用Boto3将样本数据加载到集群中.
但是在Boto3的 Redshift 文档中,我无法找到允许我将数据上传到Amazon Redshift集群的方法.
我已经能够使用Boto3与Redshift连接,代码如下:
client = boto3.client('redshift')
Run Code Online (Sandbox Code Playgroud)
但我不确定哪种方法可以让我创建表或将数据上传到Amazon Redshift,就像在SQLWorkbenchJ教程中一样.
Ale*_*x B 20
对,你需要psycopg2Python模块来执行COPY命令.
我的代码看起来像这样:
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()
Run Code Online (Sandbox Code Playgroud)
我使用boto3/psycopg2来编写CSV_Loader_For_Redshift
返回到您链接的教程中的第4步.看看它向您展示如何获取群集的URL?您必须使用PostgreSQL驱动程序连接到该URL.AWS软件开发工具包(如Boto3)提供对AWS API的访问.您需要通过PostgreSQL API连接到Redshift,就像您将连接到RDS上的PostgreSQL数据库一样.