2016-08-05 39 views
0

由于源文件中END_DATE列中的“ - ”数据未插入到表中。用于格式化数据的SQL加载程序控制文件条件

我希望它能够在下面的条件下工作。

IF '-' UPDATE END_DATE = NULL 
ELSE END_DATE DATE "DD-MM-YYYY" 

控制文件:

infile 'Test.csv' 
append into table DATA.Test 
fields terminated by ',' 
optionally enclosed by '"' 
(
    EMPLOYEE_ID 
    END_DATE DATE "DD-MM-YYYY" 
) 

源数据:Test.csv

EMPLOYEE_ID,END_DATE DATE 
"12345","-" 
"12346","12/11/2016" 

回答

0

你可以在这样的控制文件使用一个case语句:

infile 'Test.csv' 
append into table DATA.Test 
fields terminated by ',' 
optionally enclosed by '"' 
(
EMPLOYEE_ID, 
END_DATE DATE "CASE WHEN :END_DATE = '-' THEN NULL 
        ELSE to_date(:END_DATE, 'MM/DD/YYYY') 
       END" 
) 
+0

谢谢加里,它对语法进行了细微的修改, END_DATE“CASE WHEN END_DATE =' - 'THEN NULL ELSE to_date(:END_DATE,'DD-MM-YYYY') END” –