如何在 Copy commd 中使用反斜杠字符将 s3 csv gz 文件加载到 Redshift
Posted
技术标签:
【中文标题】如何在 Copy commd 中使用反斜杠字符将 s3 csv gz 文件加载到 Redshift【英文标题】:How to load s3 csv gz file to Redshift in Copy commd with backslash character 【发布时间】: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
谁能帮忙看看如何转义反斜杠?
谢谢 汤姆
【问题讨论】:
【参考方案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 文档了解更多信息。虽然这是快速修复,但最终您必须设置一些逻辑来纠正您的数据转义问题。
【讨论】:
以上是关于如何在 Copy commd 中使用反斜杠字符将 s3 csv gz 文件加载到 Redshift的主要内容,如果未能解决你的问题,请参考以下文章