用imp命令来导入数据,如果已经有数据存在的话,怎样让它只导入不存在的记录呢?是不是只有把该用户下的所有的表中的记录给删除掉才能再导入吗?

解决方案 »

  1.   

    4.导入工具imp可能出现的问题(1) 数据库对象已经存在
    一般情况, 导入数据前应该彻底删除目标数据下的表, 序列, 函数/过程,触发器等;  
    数据库对象已经存在, 按缺省的imp参数, 则会导入失败
    如果用了参数ignore=y, 会把exp文件内的数据内容导入
    如果表有唯一关键字的约束条件, 不合条件将不被导入
    如果表没有唯一关键字的约束条件, 将引起记录重复

    (2) 数据库对象有主外键约束
          不符合主外键约束时, 数据会导入失败
          解决办法: 先导入主表, 再导入依存表
    disable目标导入对象的主外键约束, 导入数据后, 再enable它们
    (3)  权限不够
    如果要把A用户的数据导入B用户下, A用户需要有imp_full_database权限

    (4)  导入大表( 大于80M ) 时, 存储分配失败
          默认的EXP时, compress = Y, 也就是把所有的数据压缩在一个数据块上.
          导入时, 如果不存在连续一个大数据块, 则会导入失败.
          导出80M以上的大表时, 记得compress= N, 则不会引起这种错误.

    (5) imp和exp使用的字符集不同
          如果字符集不同, 导入会失败, 可以改变unix环境变量或者NT注册表里NLS_LANG相关信息.
          导入完成后再改回来.(6) imp和exp版本不能往上兼容
    imp可以成功导入低版本exp生成的文件, 不能导入高版本exp生成的文件
      

  2.   

    楼主参考一下我的blog
    http://blog.csdn.net/kinglht
    导入导出命令详解