MySQL数据字段到oracle

时间:2014-11-05 22:16:35

标签: mysql oracle date datetime

我正在使用sqlldr在Oracle数据库中加载mysql数据...我的问题是我在MySQL中有一个Oracle不喜欢的DATE列...

以下是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”的oracle列是DATE

来自mysql的日期字段的示例是:“2014-08-14

最后,我从sqlldr得到的错误是:

ORA-01861:literal与格式字符串

不匹配

我知道这可能与我如何格式化“TO_DATE”有关,但我不确定我错过了什么......

更新:这使它运作起来:

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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

这让它发挥作用:

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