【问题标题】:Unloading data from Redshift从 Redshift 中卸载数据
【发布时间】:2019-07-13 13:24:42
【问题描述】:

我在 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 中卸载数据 -

方法一

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

到S3的输出是

80|test|test1|test2S|US|9

方法二

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

【问题讨论】:

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


    【解决方案1】:

    你可能会使用:

    • DELIMITER AS ','
    • ADDQUOTES
    • ESCAPE

    请参阅:UNLOAD documentation

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

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 1970-01-01
      • 1970-01-01
      • 2014-03-12
      • 2017-11-17
      • 2017-01-25
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多