如何在psycopg2中链接多个语句?

时间:2018-07-17 11:49:28

标签: python-3.x amazon-redshift psycopg2

我可以使用psycopg2将数据从s3存储桶复制到redshift表中:

import psycopg2

sql = """ copy table1 from 's3://bucket/myfile.csv'
    access_key_id 'xxxx'
    secret_access_key 'xxx' DELIMITER '\t'
    timeformat 'auto'
    maxerror as 250 GZIP IGNOREHEADER 1 """

cur.execute(sql)

如何为多个redshift语句添加字符串以完成以下三件事:

  1. 从s3移出数据后,从table1创建另一个表(table2)
  2. 将数据从表1移到表2
  3. 删除table1

我尝试了以下操作:

sql = """ copy table1 from 's3://bucket/myfile.csv'
    access_key_id 'xxxx'
    secret_access_key 'xxx' DELIMITER '\t'
    timeformat 'auto'
    maxerror as 250 GZIP IGNOREHEADER 1 
    create table table2 as table1
    drop table table1"""

我没有得到任何错误,但是没有创建表,只有副本在上面工作。我的SQL怎么了?

1 个答案:

答案 0 :(得分:1)

以下代码通过创建重复的副本将Copy from Table1Table2。然后,它删除Table1

import psycopg2

def redshift():


    conn = psycopg2.connect(dbname='***', host='******.redshift.amazonaws.com', port='5439', user='****', password='*****')
    cur = conn.cursor();

    cur.execute("create table table2 as select * from table1;")

    cur.execute(" drop table table1;")
    print("Copy executed fine!")




redshift()