PL/SQL Developer导入导出工具参数说明
所用软件环境:Orcale数据库版本10.2.0,PL/SQL Developer 版本7.0
使用目的:把数据库A中的表table1复制到数据库B中。
操作过程:1、PL/SQL Developer连接数据库A,从数据库A中导出表table1,存在本地磁盘文件中。2、PL/SQL Developer连接数据库B,向数据库B中导入表table1。
一、导出
用PL/SQL Developer登陆数据库A。使用菜单栏->Tools->Export Tables,该工具会列出Orcale中用户有权限导出的所有表的列表,下方有三种不同的导出格式可供选择,下面一一介绍。
a) Oracle Export
这种方式导出的文件是dmp文件,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广。选项参数的设置说明(辛苦查了很多资料总结的,我认为比较重要的写得比较多):
- Compress, import into one extent, 导出的同时合并碎块,尽量把数据压缩到一个EXTENT里,默认是Y.
- Consistent, cross-table consistency, 交叉表一致性导出,默认是N。数据库的一致性要求在发起导出(即select)后,在漫长的导出过程期间,无论数据是否被改写或删除,导出的数据都不会变。如果把consistent设置成Y,这个一致性就从导出的这一张表扩大到了若干张表(由于主外键约束产生联系的所有表)。
- Constraints, export constraints, 导出约束条件,默认是Y。
- Direct, direct path, 默认是N,即使用SELECT来读取表中的数据。如果设为Y, Oracle会略过SQL语句处理引擎,直接从数据文件中读取数据,然后写入导出文件。但是资料显示如果表中包含某些特定的数据类型,比如大对象、大字段,不要开启此功能,ORACLE会自动切换到常规的导出方式,并在导出日志中记录。。
- Grants, export grants,导出授权数据
- Indexes, export grants,导出索引数据,默认是Y
- Rows, export data rows,导出行数据,如果设为N,那么在导出文件中仅生成数据库对象的DDL,默认是Y
- Triggers, export triggers,导出触发器
- Buffer size, size of data buffer设置缓冲区大小
- Where clause, 写入where语句,如此不会导出全表,而是只导出符合where条件的部分数据。
- Output file, 导出dmp文件存放的位置。
b) SQL Inserts
这种方式导出为sql文件,文本文件。里面每条记录都以一条inser插入语句来表示,可用文本编辑器查看,通用性比较好,但效率很低下,适合小数据量导入导出。这个方式的参数设置比较好理解。选项参数的设置说明:
- Drop tables, 导入数据前如果存在同名数据表,先drop掉
- Create tables, 导入数据前先用create语句创建数据表
- Truncate tables, 导入数据前先将数据表中的数据以truncate方式清空,truncate是清空数据的一种方式,没有日志,也不产生回滚数据,速度比delete快,但是一旦删除无法恢复数据。
- Delete tables, 导入数据前先将数据表中的数据以delete方式清空,有日志记录,因此若是误删除后,数据还可以恢复。
- Disable triggers, 在导入数据前禁用所有触发器,导入后再启动它们,此选项可以提升导入性能
- Disable foreign key constraints, 在导入数据前禁用所有外键约束,导入后再启动它们,此选项可以提升导入性能
- Include storage, SQL文件中包含storage相关语句,如表空间名字、初始大小等等。由于不同数据库的表空间设置可能不同,因此这个选项不一定要选。
- Include privileges, 包含对其他用户的权限的赋权语句。
- Commit every ____ records, 设置每过多少条记录commit一次。
- Where clause, 只有符合where条件的部分数据被导出。
- Output file, 导出sql文件存放的位置。
c) PL/SQL Developer
这种方式导出为pde文件,.pde为Pl/sql developer自有的文件格式,可选择数据压缩,这样导出的文件比前两者小很多。只能用Pl/sql developer自己导入导出。选项参数的设置说明:
- Where clause, 只有符合where条件的部分数据被导出。
- Compress file, 压缩导出的pde文件。当数据表有大字段(如BLOB等)不建议压缩。
- Include storage, 在创建数据表时候会包含storage相关的语句,如表空间名字、初始大小等。
- Include privileges, 包含对其他用户的权限的赋权语句。
d) 三种方式比较
经过大数据表的导出实验,同样的数据表导出后,pde文件体积是dmp文件的45%~50%,而sql文件非常庞大,因此pde最节省空间。效率上sql文件方式耗时远长于其他两种方式,pde和dmp未做比较。
二、导入
用PL/SQL Developer登陆数据库B。使用菜单栏->Tools->Import Tables,该工具会列出Orcale中用户有权限导出的所有表的列表,下方有三种不同的导出格式可供选择,和导出工具一一对应,下面一一介绍。
a) Oracle Import
- Analyze, 执行转储文件(dump file)的analyze语句。导入前先用analyze分析得到一些统计信息,从而有可能优化SQL执行的性能。
- Commit, 若设成Y,则每满一个Buffer, commit一次(如果表含有LONG, LOB, BFILE, REF, ROWID, UROWID, DATE类型字段,以行为单位),如果设成N,则整张表导入完后再commit。
- Constraints, 导入一致性约束
- Grants, 导入赋权语句
- Ignore, 忽略创建错误。即导入前表已经存在,这时候忽略创建,继续导入数据而不报错。
- Indexes, 导入索引数据
- Rows, 导入记录
- Show, 列出文件内容
- Buffer Size, 这时缓冲区大小
- From User, To User, 导入时变更用户
- Import file, 需要导入的dmp文件。
b) SQL Import
- Use Command Window, 用内置的命令行执行SQL脚本命令和语句。
- Use SQL *Plus, 用SQL*Plus 执行SQL语句,下方可以设置SQL*Plus程序的位置,默认在Oracle目录下能找到。
- Import file, 需要导入的dmp文件。
c) PL/SQL Developer
- Drop tables, 导入数据前如果存在同名数据表,先drop掉
- Create tables, 导入数据前先用create语句创建数据表
- Truncate tables, 导入数据前先将数据表中的数据以truncate方式清空,truncate是清空数据的一种方式,没有日志,也不产生回滚数据,速度比delete快,但是一旦删除无法恢复数据。
- Delete records, 导入数据前先将数据表中的数据以delete方式清空,有日志记录,因此若是误删除后,数据还可以恢复。
- Disable triggers, 在导入数据前禁用所有触发器,导入后再启动它们,此选项可以提升导入性能
- Disable foreign key constraints, 在导入数据前禁用所有外键约束,导入后再启动它们,此选项可以提升导入性能
- Commit every ____ records, 设置每过多少条记录commit一次。