当前情况,在软件升级中,软件所运用的oracle数据库中有个表的一个column需要改变,以前是128个char,现在扩大成256char。
这张表存在几十万条数据。所以通过建立临时表copy主表数据,然后truncat主表,然后再把临时表数据一条条插入的方法不可行。
不知道下面的方法可行否?
exp导出这张表到磁盘,然后drop这张表(不用cascade,这样不会对trigger这类的相关东西产生影响)。然后create重新建立表(那个column的属性是256char),然后直接用import导入行否?
或者还有其他方法,不吝赐教。
这张表存在几十万条数据。所以通过建立临时表copy主表数据,然后truncat主表,然后再把临时表数据一条条插入的方法不可行。
不知道下面的方法可行否?
exp导出这张表到磁盘,然后drop这张表(不用cascade,这样不会对trigger这类的相关东西产生影响)。然后create重新建立表(那个column的属性是256char),然后直接用import导入行否?
或者还有其他方法,不吝赐教。
这个方法对于少量数据的表是可行的,但是我的这张表是海量数据。是不允许复制来操作的。
你看看我上面的exp和imp方法可以不。我测试过没看出有什么问题,但是我是新手,不能确定这个操作。
但是存在一个有不同结构的表是不是可以imp?我真的不知道。唉。谁能解说一下?
直接改字段就可以了,几十万的数据量太少了。
直接更改字段长度不是不可行,不过性能没有测试过。
几十万数据并不多,如果认为复制数据不行的话,exp/imp就更不用说了。
只是在复制的时候禁掉log、断掉索引和触发器就可以了。
不过我的问题已经解决了。还是egyle大侠解决的。再次谢谢他。
我的所用的方法是对的,就是采用exp/imp。对于大数据量的就是这么操作。小数据量的可以创建临时表做。
谢谢各位。
数据不会丢。