导进去的时候除了些莫名其妙的问题,有三个是必须处理的问题,一个是要强制表空间,不然没数据的表导不进去,第二是若程序里有Megre的sql语句的话,要检查有
没有where 如 Megre into A using b on (XXX) when matched then update A set XXX where XXX when not matched then insert into A values(XXXX) 这里的update语句有
where,在9i运行会报missing key word 的错,11g是可以的,解决的办法就是把where的条件放on 后面。当时遇到错的时候,用navicat把句子放到存储过程里面编译下,可以看到光标停留在where那里,这样查错也算奇葩了,还有一个是数据类型的问题,如有一个字段类型是clob,导进9i时会报太长的错,因为查询时的长度是不能超过4000Byte的,但存是没问题,以前dump是可以的,但变成用语句insert into是不可以的。说起导数据最后还有个问题,就是导的时候数据和序列是分开导,好像序列还是先导的,导完后很容易造成主键冲突,因为导的时候服务器在工作,导致表最大的id比序列的下个值大。
没有where 如 Megre into A using b on (XXX) when matched then update A set XXX where XXX when not matched then insert into A values(XXXX) 这里的update语句有
where,在9i运行会报missing key word 的错,11g是可以的,解决的办法就是把where的条件放on 后面。当时遇到错的时候,用navicat把句子放到存储过程里面编译下,可以看到光标停留在where那里,这样查错也算奇葩了,还有一个是数据类型的问题,如有一个字段类型是clob,导进9i时会报太长的错,因为查询时的长度是不能超过4000Byte的,但存是没问题,以前dump是可以的,但变成用语句insert into是不可以的。说起导数据最后还有个问题,就是导的时候数据和序列是分开导,好像序列还是先导的,导完后很容易造成主键冲突,因为导的时候服务器在工作,导致表最大的id比序列的下个值大。
本文详细介绍了在数据导入过程中遇到的三个关键问题:强制表空间以避免空表导入失败,修改Merge SQL语句以适应不同Oracle版本,以及解决CLOB字段数据长度限制引发的错误。同时,讨论了数据导入后可能导致主键冲突的原因及解决方案。
1281

被折叠的 条评论
为什么被折叠?



