Sql Server 数据导入到 Oracle
Sql Server表中有个大字符串字段AA,类型为varchar(8000),
要插到Oracle表的BB中去。。。
给个行之有效的方法?
********************************************************************
以下是我尝试的方法,但失败了:
设BB的类型为BLOB,再在Oracle表中建8个辅助字段:
BB1k varchar2(4000),BB2k varchar2(4000),...,BB8k varchar(4000)
把AA拆成8份,插入BB1k,BB2k,...,BB8k中,
即:
BB1k=substring(AA,1,1000)
BB2k=substring(AA,1001,2000)
... ...
BB8k=substring(AA,7001,8000)
最后,把BB1k,BB2k,...,BB8k组合起来,更新BB
即:
Update Oracle表
Set BB=utl_raw.cast_to_raw(BB1k) || utl_raw.cast_to_raw(BB2k)||...|| utl_raw.cast_to_raw(BB8k)
这时候就报错了:
ORA-06502: PL/SQL:数字或值错误:原始变量长度太大
ORA-06512: 在"SYS.UTL_RAW",line 186
********************************************************************
------解决方法--------------------------------------------------------
用sql server 的导入导出工具试一试,自定义源查询中分割数据
------解决方法--------------------------------------------------------
用TO_CLOB转换后连接
------解决方法--------------------------------------------------------
Set BB=TO_CLOB(BB1k) || TO_CLOB(BB2k)||...
------解决方法--------------------------------------------------------
为什么不直接定义成CLOB而要用BLOB???
------解决方法--------------------------------------------------------
or to_lob(..to_clob(..||... )