1. EXPDP和IMPDP概述

数据泵导出使用工具EXPDP将数据库对象的元数据(对象结构)或数据导出到转储文件中。而数据泵导入则是使用工具IMPDP将转储元件中的元数据及其数据导入Oracle数据库中。假设emp表被意外删除,那么可以使用IMPDP工具导入emp的结构信息和数据。

使用数据泵导出或导入数据时,可以获得如下好处:

(1)数据泵导出与导入可以实现逻辑备份和逻辑恢复。通过使用EXPDP,可以将数据库对象备份到转储文件中;当表被意外删除或其它误操作时,可以使用IMIPDP将转储文件中的对象和数据导入数据库中。

(2)数据泵导出和导入可以在数据库用户之间移动对象。例如,使用EXPDP可以将scott模式中的对象导出并存储在转储文件中,然后再使用IMPDP将转储文件中的对象导入其他数据库中。

(3)使用数据泵导入可以在数据库之间移动对象。

(4)数据泵可以实现表空间转移,即将一个数据库的表空间转移到另一个数据库中。

在Oracle 11g中,进行数据导入或导出操作时,既可以使用传统的导出/导入工具EXP和IMP,也可以使用数据泵EXPDP和IMPDP。但是,由于工具EXPDP和IMPDP的速度优于EXP和IMIP,因此建议在Oracle 11g中使用EXPDP执行数据导出,并使用IMPDP执行数据导入。

2. EXPDP导出数据

Oracle 提供的EXPDP可以将数据库对象的元数据或数据导出到转储文件中,EXPDP可以导出表,用户模式,表空间和全数据库4种数据。

2.1 执行EXPDP命令

EXPDP时服务器端工具,这意味着该工具只能在Oracle服务器端使用,而不能在Oracle客户端使用。通过在命令提示符窗口中输入EXPDP HELP命令,可以查看EXPDP的帮助信息。

数据泵导出包括导出表,导出模式,导出表空间和导出全数据库4种模式。需要注意的是,EXPDP工具只能将导出的转储文件存放在directory对象对应的OS目录中,而不能直接指定转储文件所在的OS目录。因此,使用EXPDP工具时,必须首先建立directory对象,并且需要为数据库用户授予使用directory对象的权限。

*** 创建一个directory对象,并为scott用户授予使用该目录的权限,代码:
SQL> create directory dump_dir as 'd:\dump';目录已创建。SQL> grant read,write on directory dump_dir to scott;授权成功。

(1)导出表

导出表是指将一个多个表的结构及其数据存储到转储文件中。普通用户只能导出自身模式中的表,如果要导出其他模式中的表,则要求用户必须具有EXP_FULL_DATABASE角色或DBA角色。在导出表时,每次只能导出一个模式中的表。

 *** 导出scott模式中的dept和emp表,代码:SQL> expdp scott/tiger directory=dump_dir dumpfile=tab.dmp tables=emp,dept

上述命令将emp和dept表的相关信息存储到转储文件tab.dmp中,并且该转储文件位于dump_dir目录对象所对应得磁盘目录中。

(2)导出模式

导出模式是指将一个或多个模式中的所有对象结构及数据存储到转储文件中。导出模式时,要求用户必须具有DBA角色或EXP_FULL_DATABASE角色。

 *** 导出scott和hr模式中得所有对象,代码:c:\>expdp system/1qaz@wsx directory=dump_dir dumpfile=schema.dmp schemas=scott,hr

执行上面的语句,将在scott模式和hr模式中的所有对象存储到转储文件schema.dmp中,并且该转储文件位于dump_dir目录对象所对应的磁盘目录中。

(3) 导出表空间

导出表空间是指将一个或多个表空间中的所有对象及数据存储到转储文件中。导出表空间要求用户必须具有DBA角色或EXP_FULL_DATABASE角色。

 *** 导出表空间tbsp_1,代码:c:\>expdp system/1qaz2wsx directory=dump_dir dumpfile=tablespace.dmp tablespaces=tbsp_1

(4)导出全数据库

导出全数据库是指将数据库中所有对象及数据存储到转储文件中,导出数据库要求用户必须具有DBA角色或EXP_FULL_DATABASE角色。需要注意的是,不会导出sys, ordsys,ordplugins, ctxsys, mdsys, lbacsys以及xdb等模式中的对象。

 *** 导出整个数据库,代码:c:\> expdp system/1qaz2wsx directory=dump_dir dumpfile=fulldatabase.dmp full=y

2.2 EXPDP命令参数

在调用EXPDP工具导出数据时,可以为该工具附加多个命令行参数。事实上,只要通过在命令提示符窗口中输入EXPDP HELP命令,就可以了解EXPDP各个参数的信息。

(1)CONTENT该参数用于指定要导出的内容,默认值为ALL,语法如下:
CONTENT={ALL | DATA_ONLY | METADATA_ONLY}ALL: 将导出对象定义及其所有数据。
DATA_ONLY: 只导出对象数据。
METADATA_ONLY: 只导出对象定义。*** 只导出scott模式中的对象数据,代码:
c:\>expdp scott/tiger directory=dump_dir dumpfile=content.dmp content=data_only(2)QUERY该参数用于指定过滤导出数据的WHERE条件,语法如下:QUERY=[schema.][table_name:] query_clauseschema: 用于指定模式名。table_name: 用于指定表名。query_clause: 用于指定条件限制子句。需要注意的是,QUERY参数不能与CONNECT=METADATA_ONLY, EXTIMATE_ONLY, TRANSPORT_TABLESPACES等参数同时使用。**** 在dept表中,导出编号为10的数据,代码:
c:\>expdp scott/tiger directory=dump_dir dumpfile=query.dmp tables=dept query='where deptno=10'(3)DIRECTORY该参数指定转储文件和日志文件所在的目录。语法如下:DIRECTORY=directory_object其中,directory_object用于指定目录对象的名称。需要注意的是,目录对象是使用CREATE DIRECTORY语句建立的对象,而不是普通的磁盘目录。(4)DUMPFILE该参数用于指定转储文件的名称,默认名称为expdat.dmp.语法如下:DUMPFILE=[directory_object:]file_name[,...]directory_object: 用于指定目录对象名。file_name: 用于指定转储文件名。注意: 如果不指定directory_object,导出工具会自动使用DIRECTORY选项指定的目录对象。(5)FULL该参数用于指定数据库模式导出,默认为N。语法格式如下:FULL={Y|N}当设置该选项为Y时,表示执行数据库导出。说明:执行数据库导出时,数据库用户必须具有EXP_FULL_DATABASE角色或DBA角色。(6)LOGFILE该参数用于指定导出日志文件的名称,默认名称为export.log。语法格式:LOGFILE=[directory_object:]file_name(7)STATUS该参数用于指定显示导出作业进程的详细状态,默认值为0.语法如下:STATUS=integerinteger 用于指定显示导出作业状态的时间间隔,单位为秒。指定该参数后,每隔特定时间间隔系统会显示作业完成的百分比。(8)TABLES该参数用于指定表模式导出。语法如下:TABLES=[schema_name.]table_name[:partition_name][,...]schema_name: 用于指定模式名。table_name: 用于指定要导出的表名。partition_name: 用于指定要导出的分区名。(9)TABLESPACES该参数用于指定要导出表空间的列表。

3. IMPDP导入数据

IMPDP是服务端的工具,该工具只能在Oracle服务器端使用,不能在Oracle客户端使用。与EXPDP相似,数据泵导入时,其转储文件在directory对象所对应的磁盘目录中,而不能直接指定转储文件所在的磁盘目录。

3.1 执行 IMPDP 命令

与EXPDP类似,调用IMPDP时只需要在命令提示符窗口中输入IMPDP命令即可。同样,IMPDP也可以进行4种类型的导入操作:导入表,导入用户模式,导入表空间和导入全数据库。

(1)导入表

导入表是指将存放在转储文件中的一个或多个表的结构及数据装载到数据库中,导入表是使用TABLES参数完成的。普通用户只可以将表导入到自己的模式中,但如果以其他用户身份导入表,则要求该用户必须具有IMP_FULL_DATABASE角色和DBA角色,导入表时,既可以将表导入源模式中,也可以将表导入到其他模式中。

*** 将表dept, emp导入到system模式中,代码:c:\>impdp system/1qaz2wsx directory=dump_dir dumpfile=tab.dmp tables=scott.dept, scott.emp remap_schema=scott:system注意:如果要将表导入到其他模式中,则必须指定REMAP_SCHEMA参数。

(2)导入模式

导入模式是指将存放在转储文件中的一个或多个模式的所有对象装载到数据库中,导入模式时需要使用SCHEMAS参数。普通用户可以将对象导入到其自身模式中,但如果以其他身份导入模式时,则要求该用户必须具有IMP_FULL_DATABASE角色或DBA角色,导入模式时,既可以将模式的所有对象导入到源模式中,也可以将模式的所有对象导入到其他模式中。

**** 将scott模式中的所有对象导入到system模式中,代码:
c:\>impdp system/1qaz2wsx directory=dump_dir dumpfile=schema.dmp schemas=scott remap_schema=scott:system;

(3)导入表空间

导入表空间是指将存放在转储文件中的一个或多个表空间中的所有对象装载到数据库中,导入表空间时需要使用TABLESPACE参数。

*** 将tbsp_1表空间中的所有对象都导入当前数据库中,代码:c:\>impdp system/1qaz2wsx directory=dump_dir dumpfile=tablespace.dmp tablespaces=tbsp_1

(4)导入全数据库

导入全数据库是指将存放在转储文件中的所有数据库对象及相关数据装载到数据库中,导入数据库使用FULL参数设置的。

*** 从fulldatabase.dmp文件中导入全数据中,代码:
C:\>impdp system/1qaz2wsx directory=dump_dir dumpfile=fulldatabase.dmp full=y

注意:人导出转储文件时,要求用户必须具有EXP_FULL_DATABASE角色或DBA角色,则导入数据时,要求用户必须具有IMP_FULL_DATABASE角色或DBA角色。

3.2 IMPDP命令参数

同样,在调用IMPDP工具导入数据时,也可以为该工具附加多个命令行参数。通过在命令提示符窗口中输入IMPDP HELP命令,就可以了解IMPDP的各个参数信息。其中,大部分参数与EXPDP的参数相同。

(1)REMAP_SCHEMA

该参数用于将源模式中的所有对象转载到目标模式中,语法如下:REMAP_SCHEMA=source_schema:target_schemasource_schema: 源模式。target_schema: 目标模式。

(2)REMAP_TABLESPACE

该参数用于指定导入时更改表空间名称。在Oracle 10g版本出现之前,这一操作非常复杂,首先,因为没有写操作权限,必须移除原始表空间的限额,然后再设置表空间。在导入过程中,原始表空间中的对象可以存储在设置后的表空间中。当任务完成后,必须将表空间恢复到原来的状态。在Oracle 10g中导入时,REMAP_TABLESPACE参数的设置大大简化了该操作,这样只需要对目标表空间进行限额,而不需要其他条件。语法如下:

REMAP_TABLESPACE=source_tablespace:target_tablespacesource_tablespace:源表空间。target_tablespace: 目标表空间。

(3)SQLFILE

 在IMPDP中使用该参数时,可以从DMP文件中提取对象的DDL语句,以便之后使用。该参数用于指定将导入的DDL操作写入到SQL脚本中。语法:SQLFILE=[directory_object:]file_namefile_name: 表示包含DDL语句的文件。实际上,IMPDP只是从DMP文件中提取对象的DDL语句,这样IMPDP并不把数据导入数据库中,只是创建DDL语句文件。**** 向soctt模式中,导入text.sql文件中的DDL语句,代码:c:\>impdp scott/tiger directory=dump_dir dumpfile=sqlfile.dmp sqlfile=test.sql

(4)TABLE_EXISTS_ACTION

该参数用于指定当表已经存在时导入作业要执行的操作,默认项为SKIP。语法如下:TABLE_EXISTS_ACTION={SKIP|APPEND|TRUNCATE|REPLACE}SKIP: 导入作业会跳过已存在的表处理下一个对象。
APPEND: 会追加数据。
TRUNCATE: 导入作业会截断表,然后为其追加新数据。
REPLACE: 导入作业会删除已存在的表,然后重建表并追加数据。

(5)TRANSPORT_DATAFILES

该参数用于指定移动空间时要被导入到目标数据库的数据文件。语法如下:
TRANSPORT_DATAFILES=datafile_namedatafile_name用于指定被复制到目标数据库的数据文件。*** 向当前数据库中导入test.dbf数据文件,代码:
c:\>impdp system/1qaz2wsx directory=dump dumpfile=tran_datafiles.dmp transport_datafiles='d:\OracleData\test.dbf'

4. SQL*Loader工具

数据泵和EXP/IMP工具仅可以实现一个Oracle数据库与另一个Oracle数据库之间的数据传输,而SQL*Loader工具则可以实现外部数据或其他数据库中的数据添加到Oracle 数据库中,例如,将Access中的数据加载到Oracle数据库中。

4.1 SQL*Loader概述

Oracle提供的数据加载工具SQL*Loader可以将外部文件中的数据加载到Oracle数据库,SQL*Loader支持多种数据类型(如日期,字符型,数据字符等),即可以将多种数据类型加载到数据库。

使用SQL*Loader导入数据时,必须编辑一个控制文件(.ctl)和一个数据文件(.dat)。控制文件用于描述要加载的数据信息,包括数据文件名,数据文件中数据的存储格式,文件中的数据要存储到哪一个字段,哪些表和列要加载数据,数据的加载方式等。

根据数据的存储格式,SQL*Loader所使用的数据文件可以分为两种,即固定格式存储的数据和自由格式存储的数据。固定格式存储的数据按一定规律排序,控制文件通过固定长度将数据分割。自由格式存储的数据则是由规定的分隔符来区分不同字段的数据。

在使用SQL*Loader加载数据时,可以使用系统提供的一些参数控制数据加载的方法。调用SQL*Loader的命令为
SQLLDR,它的语法格式如下:c:\>sqlldr

4.2 加载数据

使用SQL*Loader加载数据的关键是编写控制文件,控制文件决定要加载的数据格式。根据数据文件的格式,控制文件也分为自由格式和固定格式

(1)自由格式加载数据

如果要加载的数据没有一定格式,则可以使用自由格式加载方式,控制文件将用分隔符将数据分割为不同字段中的数据。

*** 使用自由格式加载TXT文件,代码A. 创建一个表student,用以存储要加载的数据,其创建的语法结构如下:
SQL> create table student(stuno number(4),stuname varchar2(20),sex varchar2(4),old number(4));表已创建。

B. 制作一份文本数据,存储到student.txt文件中,文本数据如下:

1001 东方  男   30
1002    开心  女   25
1003    JACK    男   23
1004    ROSE    女   20

C. 编辑控制文件student.ctl, 确定加载数据的方式,控制文件的代码:

load data infile 'd:\data\student.txt'infile table student(stuno position(01:04) integer external,stuname position(11:14) char,sex position(21:22) char,old position(29:30) integer external)infile 指定源数据文件,into table指定添加数据的目标基本表,还可以使用关键字append表示向表中追加数
据,或使用关键字replace表示覆盖表中原来的数据。加载工具通过position控制数据的分割,以便将分割后的数
据添加到表的各个列中。

D. 调用SQL*Loader加载数据。
在命令行中设置控制文件名,以及运行后产生的日志信息文件。

c:\>sqlldr system/1qaz2wsx control=d:\data\student.ctl log=d:\data\stu_log

E. 加载数据后,用户可以连接SQL*Plus,查看student数据表,查看其是否有数据记录。

(2)固定格式加载数据

如果数据文件中的数据是按一定规律排列的,可以使用固定格式加载,控制文件通过数据的固定长度将数据分割。

Excel保存数据的一种格式为"CSV(逗号分隔符)",该文件类型通过指定的分隔符隔离各列的数据,这就为通过SQL*Loader工具加载Excel中的数据提供了可能。

通过SQL*Loader加载Excel文件中的数据,代码:A. 代开Excel文件。B. 保存Excel文件为persons.csv,注意保存文件的格式为"CSV(逗号分隔)"C. 创建一个与Excel表格中数据对应的表persons,代码
SQL> create table persons(code number(4),name varchar2(20),sex varchar2(4),old number(4));表已创建。D. 编辑一个控制文件persons.ctl,代码:load data
infile 'd:\data\persons.csv'
append into table persons
fields terminated by ','
(code,name,sex,old)其中,fields terminated by指定数据文件中的分隔符为逗号","。数据的加载方式为append,表示在表中追加新数据。E. 调用SQL*Loader来加载数据,代码:
c:\> sqlldr system/1qaz2wsx control=d:\data\persons.ctlF. 加载数据后,用户可以连接SQL*Plus,查看persons数据表,查看是否有数据。

Oracle 11g_数据导出与导入(14)相关推荐

  1. Oracle数据库表导出和导入csv文件操作

    Oracle数据库表导出和导入csv文件操作 数据库是Oracle 9i 1.导出csv文件 这个十分简单,用pl/sql工具即可,首先选中要导出的表,右键选择Query data,在左侧出现的窗口中 ...

  2. python如何复制oracle数据_Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法...

    本文实例讲述了Python使用cx_Oracle模块将oracle中数据导出到csv文件的方法.分享给大家供大家参考.具体实现方法如下: # Export Oracle database tables ...

  3. memcached命令行、Memcached数据导出和导入、php连接memcache、php的session存储到memcached...

    1.memcached命令行 telnet 127.0.0.1 11211 set key2 0 30 2 ab STORED get key2 VALUE key2 0 2 ab END  如: s ...

  4. mysql导出权限授权_本文实例讲述了mysql数据库创建账号、授权、数据导出、导入操作。分享给大家供大家参考,具体如下:1、账号创建及授权grant all privileg...

    本文实例讲述了mysql数据库创建账号.授权.数据导出.导入操作.分享给大家供大家参考,具体如下: 1.账号创建及授权 grant all privileges on *.* to 'yangxin' ...

  5. oracle表数据导出成unl文件,oracle的文本导入、导出技巧

    [IT168 服务器学院]在使用oracle时,总觉得oracle的导入,导出没有informix的load,unload好用,没办法,只能参照网上朋友的思路和informix的实现,写了几个脚本,希 ...

  6. oracle数据泵导入导出6,oracle 10g数据泵和导入导出性能对比(六)

    前一段时间在一次迁移中同时用到了数据泵和EXP,发现二者效率的差别还是相当大的.这里通过一个例子简单比较一下. 这篇文章同时使用直接路径和并行来加速数据泵导入. 上一篇结束了数据泵导入在非归档模式下获 ...

  7. mysql 导出中间 数据_MYSQL数据库之间的数据导出与导入

    源数据库地址: 172.16.1.7 目标数据库地址: 172.16.1.51 步骤: (1) 进入172.16.1.7服务器,登录mysql数据库 mysqldump -uusername -ppa ...

  8. mysql授权其他用户导出数据_mysql创建账号、授权、数据导出、导入

    1.账号创建及授权 grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant opti ...

  9. oracle导出超过100m的数据库,Oracle数据库的导出和导入

    1.在本机的Windows的cmd界面直接操作导出和导入数据库. 导出Linux服务器上的数据库:我们可以确认在windows的cmd界面先输入tnsping 数据库服务名(metardb).这个命令 ...

最新文章

  1. 美多商城之商品(准备商品数据 )、Dockers容器和FastDFS存储
  2. 联想筹资13.5亿美元 支付收购摩托罗拉移动剩余款
  3. c语言间接级别不同_例9:C语言实现成绩的等级判别
  4. 一行代码完成定时任务调度,基于Quartz的UI可视化操作组件 GZY.Quartz.MUI
  5. 逆向映射是干嘛的anon_vma, vma, anon_vma_chain
  6. 【算法系列之一】二叉树最小深度
  7. websocket 学习--简单使用,nodejs搭建websocket服务器,到模拟股票,到实现聊天室
  8. .NET环境下水晶报表使用总
  9. uva 10048 Audiophobia(最小生成树)
  10. 动态数组与迭代器 0119
  11. mysql 最左_mysql索引最左匹配原则
  12. Latex写分段函数
  13. python 列表生成式 字典生成式
  14. BZOJ 3509 分块FFT
  15. 用AI「驯服」人类幼崽,手头有娃的可以试试
  16. 【Android,Kotlin】自定义弹框的简单写法Demo
  17. 注塑加工过程中需要注意的事项
  18. python使用mechanize模拟登陆新浪邮箱
  19. x86服务器能装64位系统吗,x86处理器能装64位系统吗_64位系统装32位的可以么
  20. Typora怎么插入图片链接,并设置图片居中

热门文章

  1. 高中计算机语言有哪些,高中有哪些
  2. 阿里云消息推送同时推送到iOS和android问题解决
  3. 微信小程序 - - 云开发の云函数学习笔记
  4. Python pip安装包指令用法及安装库检索
  5. [转自小兵的工具箱]C++ Builder 基础
  6. 股票平台突破策略聚宽量化回测
  7. arcsde安装步骤_ArcSDE安装问题 | 学步园
  8. 中丹学院计算机,SCEE
  9. 如何翻译整篇PPT文档?PPT文档翻译还可以这样做
  10. 六年级计算机学情分析报告,六年级学生学情分析报告