一个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
有谁可以帮忙看看如何逃避反斜杠?
由于 汤姆
答案 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文档以获取更多信息。虽然这是快速修复,但最终你必须设置一些逻辑来纠正数据转发问题。