将数据插入Oracle

时间:2011-03-02 12:50:11

标签: oracle informix trim

我正在尝试将数据库从Informix迁移到Oracle.Informix有一个选项,例如当插入到表中,如果值的大小超过列长度,那么Informix会自动修剪数据。但是Oracle不支持这个并且总是抛出异常。有没有办法防止和允许修剪或我们必须虔诚地尊重?

3 个答案:

答案 0 :(得分:2)

Oracle中没有自动修剪数据,你必须自己明确修改它,例如

insert into mytable (id, text) values (123, substr(var,1,4000));

答案 1 :(得分:2)

Oracle确实支持各种修改变量的SQL函数。我怀疑你想要的是'SUBSTR()'。问题是您需要明确指定所需的长度。在这个例子中,T23.WHATEVER被假定为VARCHAR2(30)和T24.TOO_LONG_COLUMN,呃,更长:

insert into t23
  (id
    , whatever)
select pk_col
       , substr(too_long_col, 1, 30)
from t42
/

答案 2 :(得分:1)

除了Tony的建议,你可以使用CAST

select cast ('1234' as varchar2(3)) a
from dual

如果您正在进行数据迁移,请查看DML Error Logging

将所有不符合要求的数据放入具有失败原因的相应表中是非常梦幻的。