从informix数据库导出的一个数据文件,数据量比较大,要导入到ORACLE中,其中有此列是DATETime类型的,格式如:'2008-09-14 09:11:43' 用sqlldr导入到oracle中时报了格式不对(ORACLE中定义的字段是DATE类型),请问有什么好办法能将这些数据导进去,考虑过将oracle中DATE类型改为VARCHAR 将数据导入后再改成date类型,但这样工作量相当的大,涉及到将近六十张表,每张表还可能有三四个date类型的字段,另外担心导进来再改成date类型的会出问题,所以来请教各位朋友有没有什么更好的办法!

解决方案 »

  1.   

    如果都是'2008-09-14 09:11:43'  这种格式的话 
    修改oracle时间格式
    alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss'
    这样在oracle会自动把你的字符当做时间类型
      

  2.   

    sqlldr在导入的控制文件中的指定列上加上函数进行转换,如: 
     测试表:
    create table test(id number,logdate date);测试数据文件test.csv
    1,2010-01-01 23:50:50
    1,2010-11-01 08:50:50控制文件c:\test.ctl
    load data
    infile 'c:\test.csv'
    append
    into test
    fields terminated by ','
    (
    id,
    logdate "to_date(:logdate,'yyyy-mm-dd hh24:mi:ss')"
    )导入
    sqlldr test/test control=c:\test.ctl direct=true
      

  3.   

    alter session 也只能影响当前会话,对独立的sqlldr命令不起作用。
    还是用2楼的方案吧
      

  4.   

    logdate "to_date(:logdate,'yyyy-mm-dd hh24:mi:ss')"
    2楼的朋友,logdate 前面那个冒号应该没有的吧???