现在有一张表,有5000万数据,其中有一个字段 msg_id 可能为null。
要将这个表的所有数据分成两张表a和b,只是将其字段分开,但两张表都有msg_id,且它为b的主键。
导入数据时,要求 msg_id 为null 时,将一个14位的16进制随机数放入该字段。有没有什么方法使其使用同一个随机数?取随机数方法如下:
select to_char(trunc(dbms_random.value(1000000000000000,
                                                    9999999999999999)),
                            'xxxxxxxxxxxxxx')
               from dual
还请大家多多帮忙

解决方案 »

  1.   

    1、先将为空的msg_id字段通过一个随机数据填入
    2、然后再将表a表拆分
      

  2.   

    刚刚经理说msg_id为空的数据可以跳过去了虽然count不出来到底有多少条数据,不过不会超过1%,这张表千万不能更新啊,简直要命的。
      

  3.   

    如果为空不管的话,可以使用nologging减少日志生产
    create table b as select b1,b2 from a nologging;然后使用
    alter table a set unused column b1;
    alter table a set unused column b2;最后可以将其删除alter table a drop unused column b1,b2;