有一个包含3个字段的cvs文件
1,cat,2012-06-16,2013-06-16
1,cat,2013-06-16,
我正在尝试使用fastload脚本将其加载到具有valid_dt PERIOD(DATE)的临时表
nonsequenced validtime
INSERT INTO financial.test1 (id,name,valid_dt) values
(:id,:name,period( cast(:start_dt as date FORMAT 'YYYY-MM-DD'),cast(:end_dt as date FORMAT 'YYYY-MM-DD'))
);
我得到的错误是RDBMS错误3618:快速加载中不允许表达式 插入,列INTERNALPERIODDATETYPE。
在手册中找不到任何内容,他们只表示可以快速加载。
三江源。
答案 0 :(得分:1)
FastLoad不允许ANSI样式CAST,必须是旧的Teradata样式:
:start_dt (date, FORMAT 'YYYY-MM-DD')
但是没有旧式的PERIOD演员,而且FastLoad也不允许任何形式的演绎和PERIOD(...) 表达。
因此,您只能加载可以自动转换为PEROD的数据,如:
1;cat;(2012-06-16, 2013-06-16)
1;cat;(2013-06-16, 9999-12-31)
包括parens,逗号后的空白和不同的分隔符......
我建议只使用FastLoad或MultiLoad将数据作为DATE(或CHAR)加载到临时表中,然后再加载
nonsequenced validtime
INSERT INTO financial.test1 (id,name,valid_dt) values
select id, name, period(start_dt,COALESCE(end_dt, date '9999-12-31'))
from stagingtable