如何为Teradata Insert压缩无效类型?

时间:2015-06-01 05:07:36

标签: teradata

将数据从一个表插入另一个表时,Teradata会执行自动类型转换。例如,如果将varchar插入date字段,Teradata会将varchar转换为date。如果所有varchars看起来都像有效的日期字符串,这就完美了。

但是,当Teradata遇到varchar看起来不像有效的date时,它就无法投射,因此显示错误。我如何强制dirty insert?我希望Teradata插入NULL,如果它无法转换(默默地忽略错误)

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以尝试使用日历表。其中一些将取决于您的数据结构,但基本上:

insert into <your destination table>
    select
    <t1.columns>,
t2.calendar_date 
    from <your table> t1
    left join sys_calendar.calendar t2
      on t1.<your character date column> = cast (cast(t2.calendar_date as 
        date format 'YYYY-MM-DD') as char(10))

格式化取决于列的实际外观。

您可以从日历表中插入calendar_date列,而不是从源表中插入列。如果源表中的日期无效,则会插入空值。