当前位置:首页 > 电脑教程 > 正文

命令导入dmp文件?

使用 Oracle 的 impdp 命令导入 .dmp 文件,基本语法为: impdp 用户名/密码 DIRECTORY=目录对象名 DUMPFILE=文件名.dmp,需替换实际用户名、密码、目录对象名及文件名,并确保目录对象已正确创建。

通过命令行导入DMP文件的操作指南

DMP文件通常是Oracle数据库的导出数据文件,需使用Oracle官方工具进行导入,以下是基于不同场景的详细操作步骤:


Oracle数据库导入(推荐工具:impdp

适用场景:Oracle 10g及以上版本(数据泵导出文件)

impdp 用户名/密码@数据库服务名 
  DIRECTORY=数据泵目录对象名 
  DUMPFILE=导出文件名.dmp 
  LOGFILE=导入日志名.log 
  SCHEMAS=要导入的用户名 
  REMAP_SCHEMA=原用户:目标用户  # 跨用户导入时必选
  TABLE_EXISTS_ACTION=REPLACE   # 表存在时的处理(REPLACE/APPEND/SKIP/TRUNCATE)

关键参数详解

  • DIRECTORY:指向DMP文件存放位置的Oracle目录对象(需提前创建)
  • REMAP_SCHEMA:将导出数据从原用户映射到新用户(如:REMAP_SCHEMA=old_user:new_user
  • TABLE_EXISTS_ACTION
    • REPLACE:删除原表重建
    • APPEND:追加数据
    • TRUNCATE:清空表后插入

操作示例

命令导入dmp文件?  第1张

# 创建目录对象(需DBA权限)
SQL> CREATE DIRECTORY dmp_dir AS '/u01/datadump';
# 执行导入(普通用户)
$ impdp scott/tiger@orcl 
     DIRECTORY=dmp_dir 
     DUMPFILE=hr_data.dmp 
     SCHEMAS=hr 
     REMAP_SCHEMA=hr:scott 
     LOGFILE=imp_hr.log

传统Oracle导入(imp工具)

适用场景:Oracle 9i及更早版本的导出文件(非数据泵)

imp 用户名/密码@服务名 
  file=导出文件.dmp 
  log=导入日志.log 
  fromuser=原用户 
  touser=目标用户
  ignore=y  # 忽略创建错误

SQL Server数据库导入

适用工具sqlcmd + bcp(需先创建目标表结构)

# 步骤1:生成格式文件(可选)
bcp 数据库名.模式名.表名 format nul -f 格式文件.fmt -c -T
# 步骤2:执行导入
bcp 数据库名.模式名.表名 IN 数据文件.dmp 
  -f 格式文件.fmt 
  -S 服务器名 
  -U 用户名 -P 密码

常见问题处理

  1. 权限错误(ORA-39031)
    检查目录对象读写权限:

    GRANT READ, WRITE ON DIRECTORY dmp_dir TO 用户名;
  2. 表空间不存在(ORA-00959)
    创建缺失表空间或使用重映射:

    REMAP_TABLESPACE=原表空间:目标表空间
  3. 字符集不匹配(ORA-02374)
    确认导出/导入环境的NLS_LANG设置一致:

    export NLS_LANG=AMERICAN_AMERICA.AL32UTF8  # Linux
    set NLS_LANG=AMERICAN_AMERICA.AL32UTF8     # Windows

安全注意事项

  1. 生产环境操作规范

    • 在测试环境验证后再执行生产导入
    • 使用低权限账户执行导入(非SYS/SYSTEM)
    • 提前备份目标数据库
  2. 文件来源可信度
    仅导入可信来源的DMP文件,避免反面脚本注入


专业建议

最佳实践

  • 大数据量导入使用PARALLEL参数加速(例:PARALLEL=4
  • 通过EXCLUDE/INCLUDE过滤对象(例:EXCLUDE=INDEX,CONSTRAINT
  • 导入后执行DBMS_STATS.GATHER_SCHEMA_STATS更新统计信息

引用说明:本文操作基于Oracle 19c及SQL Server 2019官方文档,命令行语法参考自:

  • Oracle Data Pump Documentation
  • Microsoft BCP Utility Docs
0