从Redshift卸载数据

时间:2019-02-19 23:23:13

标签: python amazon-s3 aws-lambda amazon-redshift

我在Redshift中有一个带有以下列的表

id int,state varchar(50), name varchar(50),tsa varchar(50),countrycode varchar(50),country_id int

当我将其从AWS Lambda插入Redshift时,它希望像这样对varchar进行转义-

cursor.execute('insert into test values (81,\'tn\',\'ic\',\'ICS\',\'US\',9)'))


我正在通过以下方式从Redshift卸载数据-

方法1

    unload ('select * from info')
    to 's3://Info/Load/' 
    iam_role 'arn:aws:iam:::role'
    addquotes
    ;

S3的输出是

80|test|test1|test2S|US|9

方法2

unload ('select * from info')
to 's3://Info/Load/' 
iam_role 'arn:aws:iam:::role'
;

S3的输出是

"41"|"PA"|"PEN"|"Test"|"US"|"90"


如何以以下格式从Redshift卸载数据,所以我可以轻松运行插入。

81,\'tn\',\'ic\',\'ICS\',\'US\',9

1 个答案:

答案 0 :(得分:0)

您可能会使用:

  • DELIMITER AS ','
  • ADDQUOTES
  • ESCAPE

请参阅:UNLOAD documentation

顺便说一句,不建议通过单独的INSERT语句将数据插入Redshift。您应该使用COPY语句从文件中批量加载数据。