【问题标题】:Copy Redshift table from S3 csv file using Python?使用 Python 从 S3 csv 文件复制 Redshift 表?
【发布时间】:2016-12-30 22:30:20
【问题描述】:

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

这是我要运行的 COPY 语句。源是带有管道分隔符的 gzip 压缩 csv 文件。这在 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;'''

【问题讨论】:

    标签: python amazon-web-services psycopg2


    【解决方案1】:

    我通过 pyODBC 库成功使用了 ODBC。只需调用 .execute(copy-command) 就不会出现问题。

    【讨论】:

      【解决方案2】:

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

      它们通常看起来像:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-14
        • 2020-05-25
        • 2018-12-10
        相关资源
        最近更新 更多