Oracle Database 11g 的 exp 与 imp 命令的用法

Oracle 数据库导入与导出命令的简单使用

简介

exp即 export,导出。

imp即 import,导入。

简单使用

命令与参数简析

imp or exp导入导出命令

test/test导出使用的用户/密码

@orcl需要导出的库

buffer=64000数据缓存区,默认 4096。越大导出速度越快,具体视计算机物理内存大小而定,据网上看到的资料,exp>64000,imp>102400,单位 Byte(字节)

FILE=C:\test\test.dmp导入导出的路径及文件名

  1. imp命令的使用

    • 完全导入

      IMP test/test@orcl BUFFER=64000 FILE=C:\test\test.dmp FULL=Y

      使用该方式,会完全导入包含在.dmp文件的数据,若是多用户的,那么将导入所有的用户。若是只需要其中一个用户的数据,使用下面的语句。

    • 限定用户

      IMP test/test@orcl BUFFER=64000 FILE=C:\test\test.dmp FROMUSER=test TOUSER=test

      使用该方式,需要导出的用户FROMUSER和被导入的用户TOUSER。如果导入文件是多用户的,就可以只导入一个用户的数据。

    • 限定用户和表

      IMP test/test@orcl BUFFER=64000 FILE=C:\test\test.dmp FROMUSER=test TABLES=(test_table)

      使用该方式,将会只导入所属用户的某一表,比如该例子中,就是属于test用户的test_table表。括号内可以写入多个表名,分割。

  2. exp命令的使用

    • 完全导出

      EXP sys/sys@orcl BUFFER=64000 FILE=C:\test\test.dmp FULL=Y

      导出整个orcl库,需要特殊权限
    • 限定用户

      EXP test/test@orcl BUFFER=64000 FILE=C:\test\test.dmp FROMUSER=test

      只导出属于test用户的数据
    • 限定用户和表

      EXP test/test@orcl BUFFER=64000 FILE=C:\test\test.dmp FROMUSER=test TABLES=(test_table)

      只导出属于test用户的test_table表。括号内可以写入多个表名,分割

Tips

  • 导出时会报EXP-00091的错误信息,该错误的原因是因为客户端字符集或 NCHARSET 参数和服务器端不一致导致一些统计信息不可用。无特殊需要,可以不用在意,确保导入和导出的服务器端的字符集一致即可。如果需要完整信息,使用以下方式修改字符集:

    • select userenv('language') from dual;查询服务器的字符集
    • AMERICAN_AMERICA.AL32UTF8为服务器的字符集
    • export NLS_LANG = AMERICAN_AMERICA.AL32UTF8设置导出客户端的字符集
    • 设置完成后再执行导出命令即可。
    1
    2
    3
    4
    5
    6
    7
    SQL> select userenv('language') from dual;

    USERENV('LANGUAGE')
    -------------------------------------------------------
    AMERICAN_AMERICA.AL32UTF8

    $ export NLS_LANG = AMERICAN_AMERICA.AL32UTF8