从s3加载到redshift时如何让文件忽略换行错误

时间:2019-06-07 17:50:39

标签: sql amazon-s3 amazon-redshift razorsql

我有一堆文件每天都按计划从s3复制到redshift,并且出现错误缺少换行符:在许多文件的最后一行的位置48(字符类型和位置不同)上发现了意外的字符0x3a文件。尽管这些错误指向原始行中的不同字符,但我认为这与以下事实有关:我正在使用的文件在文件末尾(在文件的最后一行)没有换行符。这些文件并非全部单独复制,copy语句使用前缀将文件从s3大量复制到redshift:

COPY schema.table FROM 
's3://bucket/prefix'  
iam_role 'iam_role_specfic' delimiter '|' 
`escape IGNOREBLANKLINES TRIMBLANKS BLANKSASNULL ACCEPTINVCHARS EMPTYASNULL` TRUNCATECOLUMNS FILLRECORD null as '\0'

files in S3 bucket:
prefix_25-character-guid-1234567
prefix_25-character-guid-2345678
prefix_25-character-guid-3456789

我认为s3并非将这些文件作为单独的文件读取,而是作为大量数据读取,并且每个文件末尾都没有换行符(通过在文本编辑器中查看文件来确认) )导致彼此相邻复制的两个文件的第一行和最后一行粉碎在一起。因此,在复制的每个单独文件的最后一行中都会引起错误。

我想知道如何避免这种情况。即我应该告诉s3(在上面显示的复制语句中)让它处理什么?

0 个答案:

没有答案