2014-09-02 62 views
1

了載有3場Fastload顳表

CVS文件
1,cat,2012-06-16,2013-06-16 
1,cat,2013-06-16, 

我試圖加載使用具有態表valid_dt期(DATE)fastload腳本

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。

在手冊中找不到任何內容,他們只是說它可以用fastload。

謝謝。

回答

1

FastLoad不允許ANSI風格的轉換,必須是老Teradata的風格,而不是:

:start_dt (date, FORMAT 'YYYY-MM-DD') 

但是沒有舊式期演員和FastLoad也不允許任何形式的表達和週期(。 ..)的一個表達式。

所以你只能可以自動轉換爲PEROD像負載數據:

1;cat;(2012-06-16, 2013-06-16) 
1;cat;(2013-06-16, 9999-12-31) 

包括括號,逗號和不同的分隔符之後的空白......

我會建議只需使用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