每次将镶木地板文件加载到 AWS S3 中的暂存位置时,我的管道都会执行 COPY INTO 命令,这工作得很好(执行)。
这是我的副本查询:(总结)
copy into table_name
from (
TRY_TO_DATE(
$1:int_field::varchar,
'YYYYMMDD'
) as date_field
from @"stage-location"/path/path2/ (FILE_FORMAT = > c000)
) ON_ERROR = "SKIP_FILE_1%" PATTERN = ".*part.*"
因此,我将$1:int_field (type:int)转换为 VARCHAR (::varchar),然后将此 varchar 解析为'YYYYMMDD' 格式的 DATE。这对于符合这种格式的int_field来说效果很好,但是当字段为0时,加载失败(仅当被管道执行时)
当管道自行执行 COPY COMMAND 时,我检查了 COPY_HISTORY 并收到以下错误:
Can't parse '0' as date with format 'YYYYMMDD'
当然,加载失败了……加载 失败
这是事情变得有趣的时候:当我自己在工作表中执行这个相同的复制命令时,加载很顺利: OK LOAD
我试过了:
VALIDATE, VALIDATION_MODE, VALIDATE_PIPE_LOAD
,但是这个函数不支持在加载期间转换数据的 COPY INTO 语句,就像我的一样。FILE_FORMAT= (FORMAT_NAME=c000 DATE_FORMAT='YYYYMMDD') ON_ERROR = "SKIP_FILE_1%"
>>> SAME ISSUE,只有当我用自己的手执行 COPY COMMAND 时才会加载文件。- 我认为问题是“ON_ERROR”选项,但我无法删除它(我认为),我需要过滤真正的错误:(
也许是一些会话问题左右,我阅读了关于 DATE_INPUT_FORMAT 的 smthg,但我无法检测到解决这个问题的确切问题。
有人能帮我吗?谢谢!