【问题标题】:How to load s3 csv gz file to Redshift in Copy commd with backslash character如何在 Copy commd 中使用反斜杠字符将 s3 csv gz 文件加载到 Redshift
【发布时间】:2018-04-13 03:31:29
【问题描述】:

一个s3文件是*.csv.gz,它以逗号分隔,但有些行有一些特殊的词。

CSV 文件数据样本: doc_key,doc_name,doc_brand,brand_inc,etl_load_date 8a14eff760993c84d2306b3547fc6bea,几乎加利福尼亚,美国,未知,2018-02-28 1fd23373942c9ffcdfc7223cd1114ee1,"ARIZONA \"9\" LLC",美国,未知,2018-02-28

从 's3://{path}/' 复制 stg.train_ticket 凭证'aws_access_key_id={aws_access_key_id};aws_secret_access_key={aws_secret_access_key}' TRIMBLANKS TRUNCATECOLUMNS ACCEPTINVCHARS 日期格式为“自动” GZIP csv quote as '"' delimiter ',' IGNOREHEADER as 1;

我在 sqlworkbench 上运行了复制 cmd 并得到错误: 执行 SQL 命令时出错: 从 's3://{path}/' 复制 stg.train_ticket CREDENTIALS 'aws_access_key_id={aws_access_key_id};aws_secret_access...

亚马逊无效操作:加载到表“train_ticket”失败。检查'stl_load_errors'系统表以获取详细信息。 1 条语句失败。

检查了这个表 stl_load_errors 和详细的错误信息: 列:doc_name err_reason:CSV 的报价格式无效 raw_field_value:亚利桑那州\ 错误代码:1214

谁能帮忙看看如何转义反斜杠?

谢谢 汤姆

【问题讨论】:

    标签: scala amazon-redshift


    【解决方案1】:

    尝试用另一个反斜杠转义它。 即用\\word替换\word

    【讨论】:

      【解决方案2】:

      您使用一些正则表达式或转义配置来更正您的数据,如果您根本无法做到这一点,请在您的复制命令中完全使用以下选项。

      MAXERROR XXXXX(一些 X 数小于 1,00,000)。 例如

       copy stg.train_ticket from 's3://{path}/' CREDENTIALS 'aws_access_key_id={aws_access_key_id};aws_secret_access_key={aws_secret_access_key}' TRIMBLANKS TRUNCATECOLUMNS ACCEPTINVCHARS dateformat as 'auto' GZIP csv quote as '"' delimiter ',' IGNOREHEADER as 1 MAXERROR as 10000;
      

      这将使您能够继续加载数据,请参阅 followingAmazon RedShift 文档了解更多信息。虽然这是快速修复,但最终您必须设置一些逻辑来纠正您的数据转义问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-10
        • 1970-01-01
        • 2013-08-06
        • 2012-04-19
        • 2022-11-19
        相关资源
        最近更新 更多