使用Python从S3 csv文件复制Redshift表?

时间:2016-12-30 22:30:21

标签: python amazon-web-services psycopg2

从S3 csv文件以编程方式复制到Redshift表的推荐模块和语法是什么?我一直在尝试使用psycopg2模块,但没有成功(参见psycopg2 copy_expert() - how to copy in a gzipped csv file?)。我试过cur.execute(),cur.copy_expert()和cur.copy_from() - 都没有成功。我读过的经验和评论让我得出结论,psycopg2虽然足以对postgres DB进行python编程,但由于某种原因不能用于Redshift表。那么,如果我想要一个Python脚本来执行此复制,那么解决方法是什么?

这是我想要运行的COPY语句。源是带有管道分隔符的gzip压缩文件。这可以从像DBeaver这样的SQL接口中正常工作,但我无法弄清楚它将如何转换为Python:

'''COPY <destination_table> from 's3://bucket/my_source_file.csv.gz' CREDENTIALS <my credentials>  delimiter '|' IGNOREHEADER 1 ENCODING UTF8 IGNOREBLANK    LINES NULL AS 'NULL' EMPTYASNULL BLANKSASNULL gzip ACCEPTINVCHARS timeformat 'auto' dateformat 'auto' MAXERROR 100 compupdate on;'''

2 个答案:

答案 0 :(得分:1)

我成功使用了使用pyODBC库的ODBC。只需调用.execute(copy-command),你就不会有问题。

答案 1 :(得分:0)

网上有很多从Python连接到Amazon Redshift的例子。例如:

它们通常看起来像:

conn = psycopg2.connect(...)
cur = conn.cursor()
cur.execute("COPY...")
conn.commit()