如何将s3 csv gz文件加载到带有反斜杠字符的复制commd中的Redshift

时间:2018-04-13 03:31:30

标签: scala amazon-redshift

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

CSV文件数据样本: doc_key,DOC_NAME,doc_brand,brand_inc,etl_load_date 8a14eff760993c84d2306b3547fc6bea,VIRTUALLY CALIFORNIA,美利坚合众国,未知,2018-02-28 1fd23373942c9ffcdfc7223cd1114ee1,“ARIZONA \”9 \“LLC”,美利坚合众国,未知,2018-02-28

从's3:// {path} /'复制stg.train_ticket 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引用'''分隔符','IGNOREHEADER为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和详细错误信息: column:doc_name err_reason:CSV的报价格式无效 raw_field_value:ARIZONA \ err_code:1214

有谁可以帮忙看看如何逃避反斜杠?

由于 汤姆

2 个答案:

答案 0 :(得分:0)

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

替换\\word

答案 1 :(得分:0)

如果您无法在复制命令中完全使用以下选项,则可以使用某些正则表达式或转义配置来更正数据。

MAXERROR XXXXX(某些X值小于1,00,000)。 e.g

 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;

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