有没有可以告诉Netezza忽略无效日期的选项或设置?在下面的例子中整个INSERT失败,因为源表的第三行有一个无效的日期。我期望违规行可能会被跳过,但插入零行似乎是一个极端的事情。Netezza INSERT - 忽略无效日期?
我尝试了以下,但它也失败了。另一种方法是解析源日期和检验的有效性每个组件(包括天/月,闰年等)
insert into db.test (cmclmn, effdt, efftm)
select cmclmn, case when to_date(effdt,'yyyymmdd') is null
then null
else to_date(effdt,'yyyymmdd') end,
cast(lpad(efftm,6,0) as time) as efftm
from db.test_src
;
整个脚本:
CREATE TABLE db.test
(
cmclmn integer,
effdt date,
efftm time
)
DISTRIBUTE ON (cmclmn);
drop table db.test_src;
create table db.test_src
(
cmclmn integer,
effdt integer,
efftm integer)
distribute on (cmclmn);
insert into db.test_src (cmclmn, effdt, efftm) values (1,20140120, 102000);
insert into db.test_src (cmclmn, effdt, efftm) values (2,20140121, 231212);
insert into db.test_src (cmclmn, effdt, efftm) values (3,0,111111);
insert into db.test_src (cmclmn, effdt, efftm) values (4,2014,90909);
insert into db.test (cmclmn, effdt, efftm)
select cmclmn, to_date(effdt,'yyyymmdd'), cast(lpad(efftm,6,0) as time) as efftm
from db.test_src
;