【发布时间】:2014-11-05 22:16:34
【问题描述】:
我正在使用 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: 文字与格式字符串不匹配
我知道这可能与我格式化“TO_DATE”的方式有关,但我不确定我错过了什么......
更新:这让它工作了:
DATETOSEND "to_date(SUBSTR(:DATETOSEND,1,10),'YYYY-MM-DD')"
【问题讨论】:
-
0000-00-00 00:00:00是无效日期,永远无法导入 Oracle -
是的,明白了。我试过这个:DATETOSEND "to_date(SUBSTR(:DATETOSEND,1,10),'YYYY-MM-DD')" 并且有效。
标签: mysql oracle date datetime