写在前面
笔者只是一名后端程序员,并非专业的数据库管理员,说着实的,数据库的功力很是一般般,只是比力纯熟平常程序中的增删改查之类的操作,其实 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数据库实例:
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数据库实例:
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数据库实例:
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数据库实例:
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
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |