预计将解析从 S3 加载的雪花数据中的列时到达记录末尾

Posted

技术标签:

【中文标题】预计将解析从 S3 加载的雪花数据中的列时到达记录末尾【英文标题】:End of record reached while expected to parse column in snowflake data loading from S3 【发布时间】:2021-10-29 10:01:58 【问题描述】:

我正在将数据从 S3 阶段加载到我的雪花表,但出现以下错误:

目前文件格式为csv类型,由转义字符分隔

在预期解析列 '"ABC"["T_STMP":29]' 时到达记录末尾 如果您想在遇到错误时继续加载,请使用其他值,例如 'SKIP_FILE' 或 'CONTINUE' ON_ERROR 选项。有关加载选项的更多信息,请在 SQL 客户端中运行“info loading_data”。

我也检查了数据,T_STMP 的值在换行,雪花被认为是文件的结尾

 1234562020-11-18 
 07:41:12.336COVIDABC.comhttps://www.covide.com/bright- 
 keno/u-glass/2020/xyz-a-33/chat-pnevery goodcls F- 
 CLASS12345Very-free REl Men Rare CTR.  WATCH  
 ABCDR.  HEYA MOO  https://abc.ABCD.com/v2/abc-xyze- 
chore/sdfgsjhdfgjdhfkjdh/HIIII/HELLO-ABC_EFG_I-123- 
5.jpgCENTCANT
2010-11-15 10:12:30.083663sysadmin0001-01-01 00:00:00.0wwwww33ww- 
2a2a-1a1a-7ff6-3434343trtr36352020-15-15 10:44:05.79

错误出现在最后第三行的时间戳列中应该是这样的:

     5.jpgCENTCANT2010-11-15 10:12:30.083663

我知道这很难理解,但是数据质量太差了!

文件为csv类型,由转义字符分隔

任何帮助将不胜感激

【问题讨论】:

您能否提供 COPY INTO 命令以及存在问题的行的示例? 如果您共享一个示例记录并复制命令将有助于快速找出问题? 【参考方案1】:

由于具有 100 多个不同字符长度的列作为结果时间戳和其他列进入新行而导致的错误。

解决方案是在 sqoop 导入作业中用空字符串替换所有那些冗长的列的换行符、回车符、退格符:

   REPLACE(REPLACE(REPLACE(length_column,CHAR(8),''),CHAR(10),''),CHAR(13),'') as 
   length_column

【讨论】:

以上是关于预计将解析从 S3 加载的雪花数据中的列时到达记录末尾的主要内容,如果未能解决你的问题,请参考以下文章

如何检查从 aws S3 到雪花的数据加载结果

雪花 CDC 从 S3 到雪花

来自 S3(COPY) 的雪花负载数据与来自外部表的负载

雪花外部表:添加新列

由于数据中的“雪花问题”导致部分加载

将查询结果插入 mysql 中的列时,无法从发送到 GEOMETRY 字段的数据中获取几何对象