我尝试从Amazon redshift表中卸载数据,然后使用以下命令将数据从s3文件复制到redshift。
unload ('select * from abx.xuz where src =\'vpc\'') to 's3://load/2017/' credentials 'aws_access_key_id=******;aws_secret_access_key=*****' allowoverwrite;
copy abc.abxy from 's3://sumo-processed/2017/'
credentials 'aws_access_key_id=XXXX;aws_secret_access_key=YY' NULL AS '\\0' TRUNCATECOLUMNS FILLRECORD maxerror as 255;
但它无法加载所有记录。检查stl_load_errors表后,它显示"无效数字,值' \',Pos 0,Type:Long"错误。
如何解决此错误?所以我可以加载所有录音而不跳过?
答案 0 :(得分:0)
我遇到类似的错误“无效数字,值'。',位置2,类型:整数”,原因是pandas.io.sql.read_sql将所有“ INT NULL”列转换为“ FLOAT”;所以我在数据框中有10.0s而不是10s。然后,我将数据帧转储到S3,然后使用COPY将其从S3导入到REDSHIFT中,由于COPY无法将10.0导入到REDSHIFT的INT4中而收到该错误。
修复:使用“ DECIMAL(10,0)”替换目标REDSHIFT表中的所有“ INT NULL”字段;之后,COPY就像一种魅力。