2014-11-05 68 views
0

我正在使用sqlldr在Oracle數據庫中加載mysql數據...我的問題是我有一個MySQL的日期列,Oracle不喜歡...MySQL數據字段到oracle

這裏是結構我在MySQL列:

Extra Type Field Default Null Key 
     date dateToSend  0000-00-00  NO 

這裏是我的CTL文件中的條目:

DATETOSEND "CASE :DATETOSEND WHEN '0000-00-00 00:00:00' THEN TO_DATE('1900-01-01', 'YYYY-MM-DD') ELSE TO_DATE(:DATETOSEND, 'YYYY-MM-DD HH24:MI:SS') END" 

我使用 「DATETOSEND」 神諭列DATE

從MySQL日期字段的一個例子是: 「2014-08-14

最後,我從SQLLDR得到的錯誤是:

ORA-01861:文字不匹配格式字符串

我知道這可能是一些與我如何格式化「TO_DATE」,但我不知道我錯過了什麼....

UPDATE:這得到它的工作:

DATETOSEND "to_date(SUBSTR(:DATETOSEND,1,10),'YYYY-MM-DD')" 
+0

'0000-00-00 00:00:00'是無效的日期,從來沒有被導入到Oracle – 2014-11-05 22:36:38

+0

是的,有它。我試過這個:DATETOSEND「to_date(SUBSTR(:DATETOSEND,1,10),'YYYY-MM-DD')」,它的工作原理。 – user1801932 2014-11-05 22:52:09

回答

0

我懷疑問題是:

CASE :DATETOSEND WHEN '0000-00-00 00:00:00' 

常數是Oracle無效的日期。也許這將工作:

CASE TO_CHAR(:DATETOSEND, 'YYYY-MM-DD HH24:MI:SS') WHEN '0000-00-00 00:00:00' 
+0

我將sqlldr聲明修改爲:DATETOSEND「CASE TO_CHAR(:DATETOSEND,'YYYY-MM-DD HH24:MI:SS')WHEN'0000-00-00 00:00:00'THEN TO_DATE('1900-01- 01','YYYY-MM-DD')ELSE TO_DATE(:DATETOSEND,'YYYY-MM-DD HH24:MI:SS')END「 並且得到一個新的錯誤:」Invalid Number「 – user1801932 2014-11-05 22:30:11

0

這得到它的工作:

DATETOSEND "to_date(SUBSTR(:DATETOSEND,1,10),'YYYY-MM-DD')"