最近在用imp导入命令将某个dmp文件导入数据库后,发现原来表中的数据,并没有被导入的新的数据覆盖,好像还是和以前相同,请问各位大侠,如何才能解决,为什么会这样?

解决方案 »

  1.   

    如果数据库里已经有导入imp文件里的表,那么在导入这个表的时候会提示导入不成功的,只有导之前从数据库里把这些表drop掉
      

  2.   

    imp不会覆盖原数据,相当于执行insert
      

  3.   

    导入之前用truncate把数据库删掉或者drop掉表
      

  4.   

    如果是恢复数据的话,imp前最好drop掉以前的表
      

  5.   

    需要在imp之前把旧的表drop或者数据truncate掉
      

  6.   

    直接先drop掉用户,再drop掉表空间,重新创建一个表空间不就得了
      

  7.   

    oracle的imp help=y中有覆盖参数啊,你们为什么说不能覆盖呢?可是我不会用,而且我也想知道如果能覆盖,应该如何应用这个参数???
      

  8.   

    那个是文件,不适数据。 必须Drop User cascade,再建立,在imp
      

  9.   

    B. 恢复备份数据中的指定表 
    若从本地文件恢复,使用如下命令: 
    imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n 
    commit=y buffer=65536 feedback=100000 ignore=n volsize=0 
    file=exp_icdmain_cs 
    d_yyyymmdd.dmp 
    log=imp_icdmain_csd_yyyymmdd.log 
    tables=commoninformation,serviceinfo 这个是我刚查到的,有没有高手解释一下该怎么用?
      

  10.   

    覆盖的话,增加一个参数ignore=y就可以D:\Documents and Settings\liusn>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期二 10月 31 17:52:27 2006Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.idle>conn demo/demo
    已连接。
    idle>create table testimp (id number);表已创建。idle>insert into testimp values(1);已创建 1 行。idle>insert into testimp values(2);已创建 1 行。idle>commit ;提交完成。idle>exit
    从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production中断开D:\Documents and Settings\liusn>cd\D:\>exp demo/demo@xiaoxiao file = 'd:\20061031.dmp' tables = (testimp)Export: Release 9.2.0.1.0 - Production on 星期二 10月 31 17:54:03 2006Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production
    已导出 ZHS16GBK 字符集和 AL16UTF16 NCHAR 字符集即将导出指定的表通过常规路径 ...
    . . 正在导出表                         TESTIMP          2 行被导出
    在没有警告的情况下成功终止导出。D:\>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期二 10月 31 17:54:13 2006Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.idle>conn demo/demo
    已连接。
    idle>truncate table testimp
      2  /表已截掉。idle>insert into testimp values(3);已创建 1 行。idle>insert into testimp values(4);已创建 1 行。idle>commit ;提交完成。idle>exit
    从Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production中断开D:\>imp demo/demo@xiaoxiao file = d:\20061031.dmp fromuser=demo touser=demo tabl
    es=(testimp) ignore=yImport: Release 9.2.0.1.0 - Production on 星期二 10月 31 17:55:28 2006Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.
    连接到: Oracle9i Enterprise Edition Release 9.2.0.1.0 - Production
    With the Partitioning, OLAP and Oracle Data Mining options
    JServer Release 9.2.0.1.0 - Production经由常规路径导出由EXPORT:V09.02.00创建的文件
    已经完成ZHS16GBK字符集和AL16UTF16 NCHAR 字符集中的导入
    . . 正在导入表                       "TESTIMP"          2行被导入
    成功终止导入,但出现警告。D:\>sqlplus /nologSQL*Plus: Release 9.2.0.1.0 - Production on 星期二 10月 31 17:55:33 2006Copyright (c) 1982, 2002, Oracle Corporation.  All rights reserved.idle>conn demo/demo
    已连接。
    idle>select * from testimp;        ID
    ----------
             3
             4
             1
             2
      

  11.   

    不是destroy这个参数可以,删除原来表数据的内容吗?在imp时,我也想用参数控制删除原来表的数据,然后在导入。请指教!
      

  12.   

    导入之前drop掉原来旧数据的表,或者ignore=y并且commit=y