如何通过Python Boto3将数据加载到Amazon Redshift?

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


Mar*_*k B 9

返回到您链接的教程中的第4步.看看它向您展示如何获取群集的URL?您必须使用PostgreSQL驱动程序连接到该URL.AWS软件开发工具包(如Boto3)提供对AWS API的访问.您需要通过PostgreSQL API连接到Redshift,就像您将连接到RDS上的PostgreSQL数据库一样.