将一个压缩文件从S3复制到redshift(stl-load-error)

2024-05-28 23:59:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过Python脚本将数据从S3复制到amazonredshift

command = 

    ("COPY {qualname}\n"
                "FROM 's3://{keypath}' \n"
                "CREDENTIALS 'aws_access_key_id={key};aws_secret_access_key={secret}' "
                "{gzip} "
                "{null_as} "
                #"{emptyasnull}"
                "CSV IGNOREHEADER 1;").format(qualname=qualname,
                                 keypath=url,
                                 key=aws_access_key_id,
                                 secret=aws_secret_access_key,
                                 gzip="GZIP " if compress else " ",
                                 null_as="NULL AS '{}'".format(null_as) if null_as is not None else "",
                                 emptyasnull="EMPTYASNULLL " if emptyasnull else " ")```
  • keypath是s3://{bucket-name}/daily sku-benefits/2018-12-27
  • qualname是表名

但是我得到一个错误:

(psycopg2.InternalError) Load into table 'daily_sku_benefits' failed. Check 'stl_load_errors' system table for details. [SQL: "COPY daily_sku_benefits\nFROM 's3://{bucket - name}/daily-sku-benefits/2018-12-27.csv.gzip' \nCREDENTIALS 'aws_access_key_id={access key};aws_secret_access_key={secret-key} GZIP CSV IGNOREHEADER 1;"] (Background on this error at: http://sqlalche.me/e/2j85)

在检查stl_load_error时,我得到了这个错误:

^{pr2}$

有人知道吗?在


Tags: keyawsidsecrets3accessasnull
1条回答
网友
1楼 · 发布于 2024-05-28 23:59:26

错误清楚地显示了解决问题的方法,timestamp数据的格式必须是[YYYY-MM-DD HH24:MI:SS]。在

您的数据应该如下所示(我有分隔符作为管道(|),不过,也可以)

 Column1|Columnd2|created_at
 Test1|Test description1|2018-05-10 23:54:51
 Test2|Test description2|2018-05-17 22:15:53

例如结构为-

^{pr2}$

还有一个技巧可以应用,因为您完成的数据可能不是bad,而是some percentage,因此可以在Copy命令中使用MAXERROR属性。这里是Maxerror解释。在

希望有帮助。在

相关问题 更多 >

    热门问题