我要备份删除一个表,在给了一定的条件(必须按指定的条件),仍然有大量的数据,我只好分批次用rownum限制导出,怎样做到:我第一次导出了10000条,导入到另外一个数据库中以后,我要将原库中查出来的10000条数据删除,以便我做下一次的操作,不知道我的删除能保证是前面查出的那一万条数据吗? 
另外,我用的是pl/sql的导出,然后用的是sql*loader导入的。

解决方案 »

  1.   

    exp可以加条件
    例如:(windwos下)C:\exp>exp userid=tkyte/tkyte tables=t 
    query="""where object_id < 5000"""
      

  2.   

    exp可以带检索条件,把符合条件的导出
    例如:windows下C:\exp>exp userid=tkyte/tkyte tables=t 
    query="""where object_id < 5000"""
      

  3.   

    可以啊,直接用rownum定位需要的记录范围,每次都用rownum<10000就可以了,及时commit
      

  4.   

    如果在导出和删除之间对该表没有其他写操作,可以根据ROWID唯一确定要操作的行。方法是先根据指定的条件找出那10000行的ROWID写入到一张表中,根据新建表中记录的ROWID做导出和删除。
      

  5.   

    改表应该有主键吧。按楼上的方法做,不过建议将ROWID改为改表的主键即可。