Oracle导入dmp文件

news2024/12/28 19:28:47

文章目录

  • 写在前面
  • 一、详细知识点
    • 1、dmp文件
    • 2、导出dmp文件
      • 2.1、exp和expdp区别
      • 2.2、exp导出操作
      • 2.3、expdp导出操作
      • 2.4、PL/SQL使用客户端导出
        • 2.4.1 特殊说明
        • 2.4.2 操作指引
    • 3、导入dmp文件
      • 3.1、imp和impdp区别
      • 3.2、imp导入操作
      • 3.3、impdp导入操作
      • 3.4、PL/SQL使用客户端导入
    • 二、 具体示例
      • impdp导入dmp文件

写在前面

       笔者只是一名后端程序员,并非专业的数据库管理员,说实在的,数据库的功力很是一般般,只是比较熟练平常程序中的增删改查之类的操作,其实 dmp 导入导出更多的使用场景是数据迁移和备份,只不过工作中恰巧碰到一次被领导要求进行导出导入的操作,因此学习了一下,并整理了此次学习记录,如发现纰漏,欢迎留言。
       再次提醒,非专业人士,仅供参考,因涉及数据,请审慎地对待您对数据库执行的每一条命令!请在了解文中提到的命令的每一个参数含义后,再判断如何修改命令并执行!

一、详细知识点

1、dmp文件

       dmp是"Data Pump"的缩写,它是Oracle独有的一种数据导入导出文件格式。dmp文件是Oracle数据库备份/还原的常用文件格式之一,是一种完整备份文件,可以记录Oracle数据库的所有数据,包括表、视图、过程等等,保存为二进制格式的文件。dmp文件一般包含数据定义语言(DDL)和数据操作语言(DML)。具体来说,DDL是用来定义数据库对象,例如表、视图、用户等等;DML则是用来操作这些对象,例如插入、删除、更新数据等等。

2、导出dmp文件

2.1、exp和expdp区别

       exp(Export) 和 expdp(Data Pump Export) 是Oracle数据库提供的导出工具,用于将数据库对象和数据导出为DMP文件。它们之间的主要区别如下:

工作原理exp是使用传统的导出技术,而expdp是使用Oracle Data Pump技术。Data Pump是Oracle在10g版本中引入的高性能、可扩展的导入导出工具,即 Oracle 10g 之前的版本不可以使用 expdp。
导出速度和效率由于Data Pump使用了并行处理和更高级的压缩算法,相对于exp,expdp通常具有更快的导出速度和更高效的性能。
支持的导出对象exp支持导出整个数据库、模式(用户)和表级别的对象,而expdp支持更多的导出对象级别,包括表、模式、表空间、工作表、存储过程等。
导出选项和灵活性expdp提供了更多的选项和参数,允许更灵活地控制导出的内容,如选择特定的对象、数据过滤、并行度配置等。它还提供了更丰富的重定向和日志记录选项。
文件格式exp和expdp生成的DMP文件格式不同。虽然都是.dmp后缀,但exp生成的DMP文件格式只可通过imp进行导入,而expdp生成的DMP文件格式也只可通过impdp进行导入

       总的来说,expdp相对于exp提供了更高级的功能和性能,尤其在大型数据库中进行导出操作时,更为推荐使用。它提供了更多的灵活性和性能优势,可以更精细地控制导出的内容和过程,但假如使用的数据库版本为10g之前的版本,则只能使用exp。

2.2、exp导出操作

要使用exp工具导出dmp文件,可以按照以下步骤进行操作:
    1) 使用 oracle 用户登录服务器,打开命令行终端或命令提示符窗口。
    2) 输入以下命令,以连接到Oracle数据库实例:

	sqlplus 用户名/密码@数据库实例

    3) 输入以下命令,以创建一个目录对象,用于存储导出的dmp文件:

	 CREATE DIRECTORY 目录名称 AS '目录路径';

           当然也可以通过下面这条语句,查询现有的目录路径:

   	 SELECT * FROM ALL_DIRECTORIES;

    4) 输入以下命令,以确保您具有导出数据的适当权限:

   	 GRANT EXP_FULL_DATABASE TO 用户名;

    5) 输入以下命令,以使用exp工具执行导出操作:

   	 exp 用户名/密码@数据库实例 FILE=导出文件的文件名.dmp DIRECTORY=目录名称

    6) 当使用exp工具进行导出操作时,可以使用以下一些常用的参数来控制导出的方式和内容:

参数使用说明
USER指定要导出的用户名。
TABLES指定要导出的表格。例如,TABLES=table1,table2。
FILE指定导出文件的路径和名称。例如,FILE=/path/to/export.dmp。
LOG指定导出过程的日志文件路径和名称。例如,LOG=/path/to/export.log。
QUERY指定要导出数据的查询条件。例如,QUERY=“WHERE column_name=‘value’”。
ROWS指定要导出的行数限制。例如,ROWS=100。
STATISTICS指定是否导出统计信息。可以是ALL、ESTIMATE或NONE。
GRANTS指定是否导出对象的授权信息。可以是Y、N或FULL。
CONSISTENT指定是否导出一致性视图。可以是Y或N。
INDEXES指定是否导出索引。可以是Y或N。
COMPRESS指定是否压缩导出文件。可以是Y或N。

           这些只是一些常用的参数示例,exp工具还支持其他更多的参数和选项,例如是否导出触发器、外键约束、序列等。可以使用exp help=y命令来查看完整的参数列表和详细的帮助信息。

2.3、expdp导出操作

以下是使用expdp工具来导出dmp文件的一般步骤:

    1) 使用 oracle 用户登录服务器,打开命令行终端或命令提示符窗口。
    2) 输入以下命令,以连接到Oracle数据库实例:

     sqlplus 用户名/密码@数据库实例

    3) 输入以下命令,创建一个目录对象用于存储导出的dmp文件:

   	 CREATE DIRECTORY 目录名称 AS '目录路径';

           当然也可以通过下面这条语句,查询现有的目录路径:

   	 SELECT * FROM ALL_DIRECTORIES;

    4) 输入以下命令,以确保您具有执行导出操作的适当权限:

   	 GRANT EXPORT_FULL_DATABASE TO 用户名;

    5) 输入以下命令,使用expdp工具执行导出操作(此是导出全库,请根据自己的使用场景搭配不同的参数):

   	 expdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导出文件名.dmp FULL=Y

    6) 使用expdp工具执行数据泵导出操作时,可以根据需要指定不同的参数来控制导出的方式和内容。以下是一些常用的expdp参数:

参数使用说明
SCHEMAS指定要导出的模式名。例如,SCHEMAS=schema1,schema2。
INCLUDE指定要包括的对象类型。例如,INCLUDE=TABLE,VIEW将只导出表和视图。
EXCLUDE指定要排除的对象类型。例如,EXCLUDE=INDEX将排除索引的导出。
DIRECTORY指定导出文件的目录对象。例如,DIRECTORY=datapump_dir。
DUMPFILE指定导出文件的名称。例如,DUMPFILE=export.dmp。
LOGFILE指定导出操作的日志文件名称。例如,LOGFILE=export.log。
PARALLEL指定并行导出的进程数。
COMPRESSION指定导出文件是否压缩。可以是ALL、DATA_ONLY、METADATA_ONLY或NONE。
CONTENT指定导出内容。可以是ALL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。
QUERY指定导出的数据查询条件。例如,QUERY=“WHERE column_name=‘value’”。
FILESIZE指定导出文件的最大文件大小。
JOB_NAME指定导出作业的名称。
VERSION给定系统版本号的对象。例如,VERSION=SCN,SCN为版本号。

           这些只是一些常用的参数示例,expdp工具还支持其他更多的参数和选项,例如导出模式的映射、导出过程的过滤、导出数据的转换等。可以使用expdp help=y命令来查看完整的参数列表和详细的帮助信息。

2.4、PL/SQL使用客户端导出

2.4.1 特殊说明

       需要在本地下载Oracle完整版,只下载客户端可能没有exp.exe文件,且需要指出的是,使用 PL/SQL直接导出,相当于在服务端使用 exp 导出。
       笔者在使用plsql进行导出时,还出现了 PL/SQL 比 Oracle 版本过高,导致Dos框一闪而过,且并没有生成导出文件,降低 PL/SQL 版本后成功解决,但查询一番并未有 PL/SQL 和 Oracle 版本需要一致的官方说明。

2.4.2 操作指引

       这里直接引用一篇博主的文章,该文章中有截图有步骤:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是汉化版的,加一个英文版界面截图:

在这里插入图片描述

3、导入dmp文件

3.1、imp和impdp区别

       imp(Import)和impdp(Data Pump Import)都是Oracle数据库中用于导入dmp文件的工具,它们具有以下区别:

功能imp是Oracle传统的导入工具,而impdp是更为强大和灵活的数据泵导入工具。impdp提供了比imp更多的选项和功能,可以更精确地控制导入过程。
导入方式imp使用单进程导入数据,而impdp使用多进程并行导入数据。因此,impdp通常比imp更快,特别是对于大型数据集导入。
平台和版本支持imp是基于Oracle旧的导入工具,对于较新的Oracle版本和平台可能支持有限。而impdp是Oracle Data Pump的一部分,对于大多数Oracle版本和平台都有良好的支持。
导入对象类型imp和impdp都可以导入数据库对象,如表、索引、视图等。然而,impdp还支持导入其他数据对象类型,如数据泵导出的导入导出任务、PL/SQL程序包、触发器等。
导入选项imp和impdp具有不同的导入选项和参数。例如,impdp可以通过INCLUDE和EXCLUDE参数来选择性地导入特定的对象,以及通过TRANSFORM参数来修改导入对象的属性。

       总的来说,如果使用的是较新的 Oracle 版本,并且希望更高效、更灵活地控制导入过程,那么 impdp 是更推荐的导入工具。但是,如果正在使用较旧的 Oracle 版本或需要进行简单的导入操作,那么只能使用 imp。

3.2、imp导入操作

要使用imp工具进行导入操作,可以按照以下步骤进行:

    1) 打开命令行终端或命令提示符窗口。
    2) 输入以下命令,以连接到您的Oracle数据库实例:

  	 sqlplus 用户名/密码@数据库实例

    3) 输入以下命令,创建一个目录对象用于存储导入的dmp文件:

  	 CREATE DIRECTORY 目录名称 AS '目录路径';

           当然也可以通过下面这条语句,查询现有的目录路径:

     SELECT * FROM ALL_DIRECTORIES;

    4) 输入以下命令,以确保您具有执行导入操作的适当权限:

     GRANT IMPORT_FULL_DATABASE TO 用户名;

    5) 输入以下命令,使用imp工具执行导入操作:

     imp 用户名/密码@数据库实例 FILE=导入文件的路径.dmp FROMUSER=源用户名 TOUSER=目标用户名

    6) 在使用 imp 工具进行数据导入时,可以根据需要指定不同的参数来控制导入的方式和内容。以下是一些常用的 imp 参数:

参数使用说明
USER指定要导入数据的用户名。
FILE指定要导入的文件路径和名称。例如,FILE=/path/to/import.dmp。
FROMUSER指定导入数据来自的用户名。
IGNORE指定是否忽略导入过程中遇到的错误。可以是Y或N。
INDEXES指定是否导入索引。可以是Y或N。
ROWS指定导入的行数限制。例如,ROWS=100。
DATA_ONLY指定只导入数据,不包括对象定义。可以是Y或N。
IGNORECASE指定导入时是否忽略大小写。可以是Y或N。
FULL指定导入前先删除现有对象。可以是Y或N。
LOG指定导入操作的日志文件路径和名称。例如,LOG=/path/to/import.log。
BUFFER指定读取导入文件时的缓冲区大小。
REMAP_SCHEMA指定要将导入的对象映射到的新模式名。
REMAP_TABLESPACE指定要将导入的表空间映射到的新表空间名。

           这些只是一些常用的参数示例,imp工具还支持其他更多的参数和选项,例如导入特定表、导入具有特定条件的数据、使用不同的字符集等。可以使用imp help=y命令来查看完整的参数列表和详细的帮助信息。

3.3、impdp导入操作

要使用impdp工具进行导入操作,可以按照以下步骤进行:

    1) 打开命令行终端或命令提示符窗口。
    2) 输入以下命令,以连接到您的Oracle数据库实例:

  	 sqlplus 用户名/密码@数据库实例

    3) 输入以下命令,创建一个目录对象用于导入的dmp文件:

   	 CREATE DIRECTORY 目录名称 AS '目录路径';

           当然也可以通过下面这条语句,查询现有的目录路径:

     SELECT * FROM ALL_DIRECTORIES;

    4) 输入以下命令,以确保您具有执行导入操作的适当权限:

  	 GRANT IMPORT_FULL_DATABASE TO 用户名;

    5) 输入以下命令,使用impdp工具执行导入操作:

     impdp 用户名/密码@数据库实例 DIRECTORY=目录名称 DUMPFILE=导入文件的名称.dmp REMAP_SCHEMA=源用户名:目标用户名

    6) impdp 工具提供了许多参数,用于控制导入过程中的行为和选项。以下是一些常用的 impdp 参数:

参数使用说明
ATTACH指定是否附加到正在运行的 impdp 作业。
DIRECTORY指定导入和导出文件所在的目录对象。
DUMPFILE指定要导入的数据泵文件名。
REMAP_DATAFILE指定要将源数据文件映射到的目标数据文件。
REMAP_SCHEMA指定要将源模式映射到的目标模式。
REMAP_TABLESPACE指定要将源表空间映射到的目标表空间。
TABLE_EXISTS_ACTION对于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。
TRANSFORM指定要应用的数据转换选项。
CONTENT指定要导入的对象类型(ALL、DATA_ONLY、METADATA_ONLY)。
PARALLEL指定并行执行导入作业的程度。
LOGFILE指定导入操作的日志文件名。
INCLUDE/EXCLUDE指定要导入或排除的对象。
QUERY指定导入时使用的查询条件。

           这些只是一些常用的参数示例,impdp 工具还支持其他更多的参数和选项,例如处理数据冲突、启用并行导入、使用网络传输压缩等。可以使用 impdp help=y 命令来获取完整的参数列表和详细的帮助信息。

3.4、PL/SQL使用客户端导入

3.4.1 特殊说明
       需要在本地下载Oracle完整版,只下载客户端可能没有exp.exe文件(笔者在使用plsql进行导出时,出现了 PL/SQL 和 Oracle 版本号不一样,导致频频失败,但查询一番并未有 PL/SQL 和 Oracle 版本需要一致的官方说明)
3.4.2 操作指引
       这里直接引用一篇博主的文章,该文章中有截图有步骤:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是汉化版的,加一个英文版界面截图:
在这里插入图片描述

二、 具体示例

       此示例中只是使用 impdp 导入的示例,也是笔者操作过的一个例子,imp 导入大体相当,至于导出,笔者只使用过用PL/SQL导出,因其简单,不再赘述,后续也有可能会再补充不同场景的导入导出操作。

impdp导入dmp文件

    1) 假设你不是数据库维护人员,你的领导直接给了你一份.dmp文件,让你导入到数据库中,你对从那个库中导出的,怎么导出的一无所知,这时候第一步,你最少要询问一下这是使用 exp 还是 expdp 导出的(示例是假设使用的expdp导出的数据),还有就是索要导出日志。导出日志中会显示导出的实例名、表名和数据行数;
    2) 在 PL/SQL 中执行 SELECT * FROM ALL_DIRECTORIES;查询已登记的目录,并通过XFTP或者其他工具将 .dmp 文件上传到其中某一个目录,记下来上传目录对应的目录名称;
在这里插入图片描述
    3) 使用 xshell 等工具连接要导入的数据库所在的服务器,使用 oracle 用户登录(或者登录root用户后,使用命令su - oracle切换到oracle也一样);
    4) 假如你使用 PL/SQL 连接数据库时所填的信息和导出 .dmp 的文件是这样的:
在这里插入图片描述
在这里插入图片描述

    5) 你可以参考如下这条命令修改自己的命令语句:

     impdp 1111/2222@orcl remap_schema=MTM:1111 directory=DATA_PUMP_DIR  dumpfile=DMP_FILE.dmp logfile=implog.log transform=segment_attributes:n

           即:

     impdp username/password@数据库实例名 remap_schema=导入文件中的用户名:导入数据库中的用户名 directory=dmp文件所在目录  dumpfile=导入文件.dmp logfile=implog.log transform=segment_attributes:n

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2047601.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语言无界,沟通无限:2024年翻译软件新趋势

无论是商务洽谈、学术研究、旅游探险,还是日常交流,高效、准确的翻译工具都成为了人们不可或缺的助手。百度翻译在线翻译是我最早接触的翻译工具,这次我们就一起找寻还有哪些好用的翻译工具吧。 1.福晰在线翻译 链接直达>>https://fa…

[4.10]-AutoSAR零基础学习-(SHE)Secure Hardware Extension规范<2>- Memory update protocol

既然已经看到这篇文章&#xff0c;说明开始研究SHE的安全更新协议了&#xff0c;协议具体去看原文吧&#xff0c;下面的工具是自己实现的桌面工具&#xff0c;可以在多平台使用&#xff0c;支持SHE&#xff0f;SHE / SHE_Extend&#xff0c;协议可自行定制。 >总目录<

亚马逊账户运营:揭秘那些你应该知道的坑。

在亚马逊平台上&#xff0c;选品过程与选择竞争对手的策略相似&#xff0c;都需要深思熟虑。许多卖家在选品时&#xff0c;会广泛收集并分析各种数据&#xff0c;但有时过于依赖数据而忽略了产品的实际竞争力和市场适应性。结果&#xff0c;他们可能选中了在理论上很理想&#…

leetcode 885. Spiral Matrix III

题目链接 You start at the cell (rStart, cStart) of an rows x cols grid facing east. The northwest corner is at the first row and column in the grid, and the southeast corner is at the last row and column. You will walk in a clockwise spiral shape to visi…

[算法题]在排序数组中查找元素的第一个和最后一个位置

题目链接: 在排序数组中查找元素的第一个和最后一个位置 二分查找求解, 但是普通版本的二分查找无法求解, 普通版本的二分查找每次根据中点的值与目标值进行区间划分, 但是该题数据为非递减顺序, 所以可能出现如下情况: nums [1, 2, 3, 3, 3, 4, 5, 6] target 3 此时普通版本…

将VAE用于时间序列:生成时间序列的合成数据

变分自编码器(VAEs)是一种生成式人工智能,因其能够创建逼真的图像而备受关注,它们不仅可以应用在图像上&#xff0c;也可以创建时间序列数据。标准VAE可以被改编以捕捉时间序列数据的周期性和顺序模式,然后用于生成合成数据。本文将使用一维卷积层、策略性的步幅选择、灵活的时…

如何开发一款网店后台多开软件?!

什么是网店后台多开软件&#xff1f; 网店后台多开软件指的是能够同时打开多个网店后台的一款软件&#xff0c;即一个软件上可以登录多个网店后台&#xff08;如&#xff1a;拼多多店铺后台、抖店店铺后台、快手小店店铺后台、孔网店铺后台、微店店铺后台、小红书店铺后台等等…

Leetcode 34. 二分查找 C++实现

Leetcode 34. 在排序数组中查找元素的第一个和最后一个位置 问题&#xff1a;给你一个按照非递减顺序排列的整数数组 nums &#xff0c;和一个目标值 target 。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target &#xff0c;返回 [-1, -1]。你…

Python之PyInstaller打包EXE程序(带音乐加图片等资源)

Python之PyInstaller打包EXE程序(带音乐加图片等资源) 要将你的 Python 程序打包成一个可执行文件&#xff08;.exe&#xff09;&#xff0c;并确保图片和音乐文件包含在其中&#xff0c;你可以使用 PyInstaller 工具。下面是一个简单的步骤来打包你的程序&#xff1a; 以我的…

Python实现水果忍者(开源)

一、整体介绍&#xff1a; 1.1 前言&#xff1a; 游戏代码基于Python制作经典游戏案例-水果忍者做出一些改动&#xff0c;优化并增加了一些功能。作为自己Python阶段学习的结束作品&#xff0c;文章最后有源码链接。 1.2 Python主要知识&#xff1a; &#xff08;1&#xf…

FPGA开发——UART回环实现之发送模块的设计和数据回环整体实现

一、简介 在上一篇文章当中我们实现了UART接收模块的相关设计和功能实现&#xff0c;在今天的文章中我们继续实现剩下的发送模块的相关设计和完成完整的串口数据回环的实验。 在文章的最后我会给出完整的工程&#xff0c;给小伙伴们参考。 二、接收模块的基本设计 在接收模块…

如何下载老版本 的mysql

方案1&#xff1a;打开地址&#xff0c;即可 MySQL :: Download MySQL Community Server (Archived Versions) 输入地址 https://downloads.mysql.com/archives/community/ 方案2&#xff1a; MySQL :: Download MySQL Installer https://dev.mysql.com/downloads/windows…

推荐使用阿贝云免费云服务器、免费虚拟主机

官网地址&#xff1a;https://www.abeiyun.com 阿贝云免费云服务器&#xff0c;性价比之选&#xff01; 不得不说&#xff0c;阿贝云的免费云服务器真的太棒了&#xff01;不仅免费&#xff0c;还能提供如此优质的服务。服务器的配置虽然不算高端&#xff0c;但对于一般的应用…

【MySQL】数据库约束

系列文章目录 第一章 数据库基础 第二章 数据库基本操作 文章目录 系列文章目录前言约束关键字一览NOT NULLUNIQUEDEFAULTPRIMARY KEY自增主键 FOREIGN KEY总结 前言 在学习了数据库的增删改查操作之后&#xff0c;接下来就需要进阶的学习关键字来完善SQL语句的条件。学习数据…

宝塔部署Django项目(华为云)

1、登录华为云: 2、点击远程登录: 3、打开宝塔网址(华为云选的是centos) 4、在华为终端复制指令点击运行: 会显示安装完成,出现一个页面记录一下,方便以后登录: 5、复制外网面板地址到浏览器地址栏,输入账号,密码登录,在这里进行配置: 一、Django项目的设置以及压…

Gafgyt僵尸网络针对云原生环境,SSH弱密码成GPU挖矿新目标

近日&#xff0c;网络安全研究人员发现了 Gafgyt 僵尸网络的一个新变种&#xff0c;它以 SSH 密码较弱的机器为目标&#xff0c;最终利用其 GPU 计算能力在被攻击的实例上挖掘加密货币。 Aqua Security 研究员 Assaf Morag 在周三的一份分析报告中说&#xff1a;"这表明&…

虎牙的商业化畅想

2024年8月13日&#xff0c;虎牙公司公布了2024年第二季度财报。财报显示&#xff0c;2024年第二季度&#xff0c;虎牙公司总收入达15.4亿元。其中&#xff0c;来自游戏相关服务、广告和其他业务的收入同比增长152.7%至3.1亿元。在非美国通用会计准则下&#xff0c;该季度归属于…

KDP数据平台:以实战案例验证技术领先力

本文由智领云 LeetTools 工具自动生成 申请试用&#xff1a; https://www.leettools.com/feedback/ 在当今快速发展的技术环境中&#xff0c;数据平台的选择对企业的数字化转型和业务发展至关重要。智领云开源KDP&#xff08;Kubernetes Data Platform&#xff09;在数据处理和…

状态dp或滑动窗口

前言&#xff1a;这个题目可以用状态dp来做&#xff0c;其实还有一个思路&#xff0c;类似滑动窗口&#xff0c;如果有遇到第二个0&#xff0c;左指针加一 class Solution { public:int longestSubarray(vector<int>& nums) {int n nums.size();vector<vector<…

Mac 自定义键盘快捷键打开系统应用

在 macOS 中&#xff0c;可以通过自定义键盘快捷键来打开系统应用程序。这可以更快捷地访问常用的应用程序&#xff0c;提高工作效率。下面以创建活动监视器快捷键为例介绍“Mac 自定义键盘快捷键打开系统应用”的一般步骤&#xff1a; 创建活动监视器快捷键 键入command空格打…