oracle 导入导出文章

来源:互联网 发布:cheatmaker 源码 编辑:程序博客网 时间:2024/04/29 16:53

oracle10g引入了数据泵,但是在此之前导入导出都是使用exp/imp来完成的,这两种方式的主要区别是

1)数据泵是服务端的工具,它只能在服务端使用而不能在客户端使用
2)exp/imp可以在服务端和客户端使用
所以说如果你想导出一个远程服务器的数据,那么只能使用exp/imp,oracle10g和11g保留了exp/imp的功能


除了EXP/IMP,EXPDP/IMPDP之外,oracle还提供了其他的移动数据的方式:平面文件卸载和数据泵卸载(这两种方式都是基于SQLLDR和外部表)

详细请看

平面文件卸载

数据泵卸载


首先来讲解一下exp/imp的使用
1)exp
C:\Documents and Settings\Administrator>exp help=y
通过输入 EXP 命令和您的用户名/口令, 导出
操作将提示您输入参数:
 例如: EXP SCOTT/TIGER
或者, 您也可以通过输入跟有各种参数的 EXP 命令来控制导出
的运行方式。要指定参数, 您可以使用关键字:

格式:  EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表

USERID 必须是命令行中的第一个参数。

关键字   说明 (默认值)         关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL        导出整个文件 (N)
BUFFER   数据缓冲区大小        OWNER        所有者用户名列表
FILE     输出文件 (EXPDAT.DMP)  TABLES     表名列表
COMPRESS  导入到一个区 (Y)   RECORDLENGTH   IO 记录的长度
GRANTS    导出权限 (Y)          INCTYPE     增量导出类型
INDEXES   导出索引 (Y)         RECORD       跟踪增量导出 (Y)
DIRECT    直接路径 (N)         TRIGGERS     导出触发器 (Y)
LOG      屏幕输出的日志文件    STATISTICS    分析对象 (ESTIMATE)
ROWS      导出数据行 (Y)        PARFILE      参数文件名
CONSISTENT 交叉表的一致性 (N)   CONSTRAINTS  导出的约束条件 (Y)


OBJECT_CONSISTENT    只在对象导出期间设置为只读的事务处理 (N)
FEEDBACK             每 x 行显示进度 (0)
FILESIZE             每个转储文件的最大大小
FLASHBACK_SCN        用于将会话快照设置回以前状态的 SCN
FLASHBACK_TIME       用于获取最接近指定时间的 SCN 的时间
QUERY                用于导出表的子集的 select 子句
RESUMABLE            遇到与空格相关的错误时挂起 (N)
RESUMABLE_NAME       用于标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT    RESUMABLE 的等待时间
TTS_FULL_CHECK       对 TTS 执行完整或部分相关性检查
TABLESPACES          要导出的表空间列表
TRANSPORT_TABLESPACE 导出可传输的表空间元数据 (N)
TEMPLATE             调用 iAS 模式导出的模板名


成功终止导出, 没有出现警告。



每个参数的意思写的都很清楚,在此就不一一介绍,如有不明白可以百度谷歌
exp导出分为表模式,用户模式,完全模式。分别对应导出表,导出整个用户下的对象,导出整个库下的所有对象
例子如下
表模式
exp scott/tiger@orcl rows=y indexes=y compress=n buffer=65536 file=d:/exp_01.dmp log=d:/exp_01.log tables=(emp) query=\"where rownum<10\"
--导出scott下的表emp中前10行的数据
用户模式
exp scott/tiger@orcl owner=scott rows=y indexes=n compress=n buffer=65536 feedback=100000 file=d:/exp_01.dmp log=d:/exp_01.log
完全模式
exp system/manager@orcl file=d:/exp_01.dmp log=d:/exp_01.log full=y

2)imp
C:\Documents and Settings\Administrator>imp help=y


通过输入 IMP 命令和您的用户名/口令, 导入
操作将提示您输入参数:


     例如: IMP SCOTT/TIGER


或者, 可以通过输入 IMP 命令和各种参数来控制导入
的运行方式。要指定参数, 您可以使用关键字:


     格式:  IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     例如: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表


USERID 必须是命令行中的第一个参数。


关键字   说明 (默认值)        关键字      说明 (默认值)
--------------------------------------------------------------------------
USERID   用户名/口令           FULL       导入整个文件 (N)
BUFFER   数据缓冲区大小        FROMUSER    所有者用户名列表
FILE     输入文件 (EXPDAT.DMP)  TOUSER     用户名列表
SHOW     只列出文件内容 (N)     TABLES      表名列表
IGNORE   忽略创建错误 (N)    RECORDLENGTH  IO 记录的长度
GRANTS   导入权限 (Y)          INCTYPE     增量导入类型
INDEXES   导入索引 (Y)         COMMIT       提交数组插入 (N)
ROWS     导入数据行 (Y)        PARFILE      参数文件名
LOG     屏幕输出的日志文件    CONSTRAINTS    导入限制 (Y)
DESTROY                覆盖表空间数据文件 (N)
INDEXFILE              将表/索引信息写入指定的文件
SKIP_UNUSABLE_INDEXES  跳过不可用索引的维护 (N)
FEEDBACK               每 x 行显示进度 (0)
TOID_NOVALIDATE        跳过指定类型 ID 的验证
FILESIZE               每个转储文件的最大大小
STATISTICS             始终导入预计算的统计信息
RESUMABLE              在遇到有关空间的错误时挂起 (N)
RESUMABLE_NAME         用来标识可恢复语句的文本字符串
RESUMABLE_TIMEOUT      RESUMABLE 的等待时间
COMPILE                编译过程, 程序包和函数 (Y)
STREAMS_CONFIGURATION  导入流的一般元数据 (Y)
STREAMS_INSTANTIATION  导入流实例化元数据 (N)


下列关键字仅用于可传输的表空间
TRANSPORT_TABLESPACE 导入可传输的表空间元数据 (N)
TABLESPACES 将要传输到数据库的表空间
DATAFILES 将要传输到数据库的数据文件
TTS_OWNERS 拥有可传输表空间集中数据的用户


成功终止导入, 没有出现警告。



注意IGNORE参数,如果你要导入某个表,而这个表本来就存在的话,如果默认IGNORE为N的话,将会发现什么都到不进去,此时应该设置IGNORE=Y,它会根据你的表的主键去插入数据,如果主键冲突将不插入,但是如果这个表没有主键,那么久可能会产生重复的数据了.


例子
imp scott/tiger@orcl fromuser=scott touser=scott rows=y indexes=y commit=y ignore=y buffer=65536 file = d:/exp_01.dmp log = d:/exp_01.log


再来讲解一下数据泵EXPDP和IMPDP的使用


C:\Documents and Settings\Administrator>expdp help = y


数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:


   示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:


   格式:  expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
   示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
               或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表


USERID 必须是命令行中的第一个参数。


关键字               说明 (默认)
------------------------------------------------------------------------------
ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。
COMPRESSION           减小有效的转储文件内容的大小
                      关键字值为: (METADATA_ONLY) 和 NONE。
CONTENT               指定要卸载的数据, 其中有效关键字为:
                      (ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY             供转储文件和日志文件使用的目录对象。
DUMPFILE              目标转储文件 (expdat.dmp) 的列表,
                      例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD   用于创建加密列数据的口令关键字。
ESTIMATE              计算作业估计值, 其中有效关键字为:
                      (BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY         在不执行导出的情况下计算作业估计值。
EXCLUDE               排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。
FILESIZE              以字节为单位指定每个转储文件的大小。
FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。
FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。
FULL                  导出整个数据库 (N)。
HELP                  显示帮助消息 (N)。
INCLUDE               包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要创建的导出作业的名称。
LOGFILE               日志文件名 (export.log)。
NETWORK_LINK          链接到源系统的远程数据库的名称。
NOLOGFILE             不写入日志文件 (N)。
PARALLEL              更改当前作业的活动 worker 的数目。
PARFILE               指定参数文件。
QUERY                 用于导出表的子集的谓词子句。
SAMPLE                要导出的数据的百分比;
SCHEMAS               要导出的方案的列表 (登录方案)。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,
                      要监视的频率 (以秒计) 作业状态。
TABLES                标识要导出的表的列表 - 只有一个方案。
TABLESPACES           标识要导出的表空间的列表。
TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。
VERSION               要导出的对象的版本, 其中有效关键字为:
                      (COMPATIBLE), LATEST 或任何有效的数据库版本。


下列命令在交互模式下有效。
注: 允许使用缩写


命令               说明
------------------------------------------------------------------------------
ADD_FILE              向转储文件集中添加转储文件。
CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT           退出客户机会话并使作业处于运行状态。
FILESIZE              后续 ADD_FILE 命令的默认文件大小 (字节)。
HELP                  总结交互命令。
KILL_JOB              分离和删除作业。
PARALLEL              更改当前作业的活动 worker 的数目。
                      PARALLEL=<worker 的数目>。
START_JOB             启动/恢复当前作业。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,
                      要监视的频率 (以秒计) 作业状态。
                      STATUS[=interval]
STOP_JOB              顺序关闭执行的作业并退出客户机。
                      STOP_JOB=IMMEDIATE 将立即关闭
                      数据泵作业。



参数介绍:
1)CONTENT: 指定要卸载的数据, 其中有效关键字为:ALL, DATA_ONLY 和 METADATA_ONLY。
当设置为ALL时将导出对象及其所有数据,设置为DATA_ONLY的时候将导出对象的数据,设置为METADATA_ONLY的时候将指导处对象的定义
2)DIRECTORY:供转储文件和日志文件使用的目录对象。
这只是服务器上存储的映射到os文件系统的一个目录,oracle可以通过这个值找到os上的文件
建立目录
CREATE [OR REPLACE] DIRECTORY directory AS 'pathname';
目录创建以后,就可以把读写权限授予特定用户,具体语法如下:
GRANT READ[,WRITE] ON DIRECTORY directory TO username;

例子:

        scott@ORCL> set wrap off

scott@ORCL> column id format a20;
scott@ORCL> column content format a50;
scott@ORCL> select * from dba_directories;
scott@ORCL> create or replace directory dump_dir as ' d:\test\dump';


目录已创建。


scott@ORCL> conn system/pass@orcl as sysdba
已连接。
sys@ORCL> grant read, write on directory dump_dir to scott;


授权成功。


sys@ORCL> conn scott/triger@orcl
已连接。
scott@ORCL> select * from dba_directories;


OWNER                          DIRECTORY_NAME                 DIRECTORY_PATH
------------------------------ ------------------------------ --------------------------------------


SYS                            DUMP_DIR                       d:\test\dump
SYS                            TMP                            D:/tmp
SYS                            DUMPDIR                        d:\test\dump
...


已选择12行。


scott@ORCL>  drop directory dump_dir;


目录已删除。

3)QUERY : 用于导出表的子集的谓词子句。
QUERY =[schema.][tablename]query_clause

例子
使用EXPDP时候,转储文件只能被存储在DIRECTORY对象对应的OS目录中,而不能直接指定一个OS目录.使用EXPDP时,必须先创建转储文件的目录,以及给改用户授权使用这个DIRCTORY对象
1:导出表
expdp scott/tiger@orcl directory=DUMPDIR dumpfile=dept.dmp tables=dept
2:导出用户
expdp scott/tiger@orcl directory=DUMPDIR dumpfile=schema.dmp schemas=scott
3:导出表空间
expdp scott/trger directory=DUMPDIR dumpfile = tb.dmp tablespaces=users
4:导出数据库
expdp scott/trger directory= dump_dir dumpfile=full.dmp full=y

F:\>impdp help=y
数据泵导入实用程序提供了一种用于在 Oracle 数据库之间传输
数据对象的机制。该实用程序可以使用以下命令进行调用:


     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


您可以控制导入的运行方式。具体方法是: 在 'impdp' 命令后输入
各种参数。要指定各参数, 请使用关键字:


     格式:  impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
     示例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp


USERID 必须是命令行中的第一个参数。


关键字               说明 (默认)
------------------------------------------------------------------------------
ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。
CONTENT               指定要加载的数据, 其中有效关键字为:
                      (ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY             供转储文件, 日志文件和 sql 文件使用的目录对象。
DUMPFILE              要从 (expdat.dmp) 中导入的转储文件的列表,
                      例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD   用于访问加密列数据的口令关键字。
                      此参数对网络导入作业无效。
ESTIMATE              计算作业估计值, 其中有效关键字为:
                      (BLOCKS) 和 STATISTICS。
EXCLUDE               排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。
FLASHBACK_SCN         用于将会话快照设置回以前状态的 SCN。
FLASHBACK_TIME        用于获取最接近指定时间的 SCN 的时间。
FULL                  从源导入全部对象 (Y)。
HELP                  显示帮助消息 (N)。
INCLUDE               包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要创建的导入作业的名称。
LOGFILE               日志文件名 (import.log)。
NETWORK_LINK          链接到源系统的远程数据库的名称。
NOLOGFILE             不写入日志文件。
PARALLEL              更改当前作业的活动 worker 的数目。
PARFILE               指定参数文件。
QUERY                 用于导入表的子集的谓词子句。
REMAP_DATAFILE        在所有 DDL 语句中重新定义数据文件引用。
REMAP_SCHEMA          将一个方案中的对象加载到另一个方案。
REMAP_TABLESPACE      将表空间对象重新映射到另一个表空间。
REUSE_DATAFILES       如果表空间已存在, 则将其初始化 (N)。
SCHEMAS               要导入的方案的列表。
SKIP_UNUSABLE_INDEXES 跳过设置为无用索引状态的索引。
SQLFILE               将所有的 SQL DDL 写入指定的文件。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,
                      要监视的频率 (以秒计) 作业状态。
STREAMS_CONFIGURATION 启用流元数据的加载
TABLE_EXISTS_ACTION   导入对象已存在时执行的操作。
                      有效关键字: (SKIP), APPEND, REPLACE 和 TRUNCATE。
TABLES                标识要导入的表的列表。
TABLESPACES           标识要导入的表空间的列表。
TRANSFORM             要应用于适用对象的元数据转换。
                      有效的转换关键字: SEGMENT_ATTRIBUTES, STORAGE
                      OID 和 PCTSPACE。
TRANSPORT_DATAFILES   按可传输模式导入的数据文件的列表。
TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。
                      仅在 NETWORK_LINK 模式导入操作中有效。
VERSION               要导出的对象的版本, 其中有效关键字为:
                      (COMPATIBLE), LATEST 或任何有效的数据库版本。
                      仅对 NETWORK_LINK 和 SQLFILE 有效。


下列命令在交互模式下有效。
注: 允许使用缩写


命令               说明 (默认)
------------------------------------------------------------------------------
CONTINUE_CLIENT       返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT           退出客户机会话并使作业处于运行状态。
HELP                  总结交互命令。
KILL_JOB              分离和删除作业。
PARALLEL              更改当前作业的活动 worker 的数目。
                      PARALLEL=<worker 的数目>。
START_JOB             启动/恢复当前作业。
                      START_JOB=SKIP_CURRENT 在开始作业之前将跳过
                      作业停止时执行的任意操作。
STATUS                在默认值 (0) 将显示可用时的新状态的情况下,
                      要监视的频率 (以秒计) 作业状态。
                      STATUS[=interval]
STOP_JOB              顺序关闭执行的作业并退出客户机。
                      STOP_JOB=IMMEDIATE 将立即关闭
                      数据泵作业。



例子:
1)导入表
impdp qita/qita@orcl directory= DUMPFIR dumpfile= dept.dmp tables = scott.dept
2)导入方案
impdp system/pass@orcl directory= DUMPDIR dumpfile= schema.dmp
3)导入表空间
impdp system/pass@orcl directory= DUMPDIR dumpfile=tablespace.dmp tablespaces =user
4)导入数据库

impdp system/pass@orcl directory= DUMPDIR dumpfile=full.dmp full=y


3、按表空间导出: Expdp lttfm/lttfm@fgisdb dumpfile=expdp_tablespace.dmp tablespaces=GCOMM.DBF logfile=expdp_tablespace.log directory=dir_dp job_name=my_job4、导出方案 Expdp lttfm/lttfm DIRECTORY=dir_dp DUMPFILE=schema.dmp SCHEMAS=lttfm,gwm5、导出整个数据库: expdp lttfm/lttfm@fgisdb dumpfile =full.dmp full=y logfile=full.log directory=dir_dp job_name=my_job

权限:grant create table,create any view,create trigger, create sequence,create procedure, unlimited tablespace to test;

转:http://blog.csdn.net/viszl/article/details/6732066

0 0
原创粉丝点击