我有一堆文件每天按计划从 s3 复制到 redshift,我收到错误 Missing newline: Unexpected character 0x3a found at location 48(字符类型和位置不同)在许多文件的最后一行。尽管这些错误指向原始行中的不同字符,但我认为这与我使用的文件在文件末尾没有换行符(在文件的最后一行)有关. 这些文件不会全部单独复制,复制语句使用前缀将文件从 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 什么(在上面显示的复制语句中)允许它处理这个?