问题1》现在数据库中有以列数据就varchar(3072)的XML片断,其中有一些换行符,导出来就自动换行了,请问能不能导出时让它自动一条记录一行?而不管我的数据列中是否有换行。问题2》数据类型是varchar(32) not null,当数据为NULL时,导出来的数据为32个空个格,除非把它改成空字符串,否则用sqlldr导回数据库的时候就是空格而不是NULL了。这种怎么处理呢?问题3》好像sqlldr不认识控制文件中的varchar,所以改成char.这样数据导入的时候是否就与原数据不一致了?

解决方案 »

  1.   

    1.有没有空行对你导入,有什么问题吗?2.看来LZ用的是固定长度的文件来导入。可以在控制文件里面,定义为这样的格式,可以做到NULL的插入。
    COL position(nn:nn) char "NVL(RTRIM(:COL),:COL)"3.控制文件中,不支持的数据类型:
        * INTEGER(n)
        * SMALLINT
        * FLOAT
        * DOUBLE
        * BYTEINT
        * ZONED
        * (PACKED)DECIMAL
        * VARGRAPHIC
        * VARCHAR
        * VARRAW
        * LONG VARRAW
      

  2.   

    1.在导出前先用replace()函数用空字符串替换掉换行符
    2.第二个问题没有遇见过?