对数据库进行逻辑备份或数据转储,也就是对数据库实时导入、导出操作时,既可以使用常规的EXP/IMP客户端程序,也可以使用数据泵技术:IMPDP/EXPDP

使用数据泵导出或导入的优点:

1.数据泵导出与导入可以实现逻辑备份和逻辑恢复。

2.数据泵导出和导入可以在数据库用户之间移动对象

3.使用数据泵导入可以再数据库之间移动对象

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

较之EMP/IMP速度较快

  EXPDP可以将数据库对象的元数据或数据导出的转储文件中,EXPDP可以导出表、用户模式、表空间和全数据库。EXPDP是服务器端工具,这意味着该工具只能在Oracle服务器端使用,而不能再Oracle客户端使用。

需要注意:EXPDP工具只能将导出的转储文件存放在DIRECTORY对象对应的OS目录中,而不能直接指定转储文件所在的OS目录

如:创建一个DIRECTORY对象,并为SCOTT用户授予使用该目录的权限

create directory dump_dir as 'd:\orcl';    --此目录必须设置utl_file_dire

grant read,write on directory dump_dir to scott;

导出表

  将一个或多个表的结构及其数据存储到转储文件中(其他模式,,有EXP_FULL_DATABASE|DBA角色)

在导出表中,每次只能导出一个模式中的表

如:导出SCOTT模式中的dept和emp表

expdp scott/tiger directory=dump_dir dumpfile=tab.dmp tables=emp,dept;

导出模式

  是指将一个或多个模式中的所有对象结构及数据存储到转储文件中(其他模式,,有EXP_FULL_DATABASE|DBA角色)。

如:导出scott和hr模式中的所有对象

expdp system/xcn258 directory=dump_dir dumpfile=schemas.dmp schemas=scott,hr

导出表空间

  导出表空间是指将一个或多个表空间中的所有对象及数据存储到转储文件(其他模式,,有EXP_FULL_DATABASE|DBA角色)。

expdp system/xcn258 directory=dump_dir dumpfile=tablespace.dmp tablespaces=tbsp_1;

导出全部数据库

  是指将数据库中的所有对象及数据存储到转储文件中(其他模式,,有EXP_FULL_DATABASE|DBA角色)。

需要注意的是,导出数据库时,不会导出SYS,ORDSYS,ORDPLUGINS,CTXSYS,MDSYS,LBACSYS和XDB等模式中的对象

如:导出整个数据库

expdp system/xcn258 directory=dump_dir dumpfile=fulldatabase.dmp full=y;

EXPDP命令参数

  在调用EXPDP工具导出数据时,可以为该工具附加多个命令行参数

--content

 =all| data_only| metadata_only

--query

 ='where...'

用来过滤导出数据的where

--directory

用来指定转储文件和日志文件所在的目录

--dumpfile

用于指定转储文件的名称默认名称expdat.dmp

--full

用于指定数据库模式导出(y|n 默认是n)

  数据库导出时,数据库用户必须具有EXP_FULL_DATABASE角色或DBA角色

--logfile

  该参数用于指定导出日志文件的名称,默认名称为export.log

--status

  该参数用于指定显示导出作业进程的详细状态,默认值为0

--tables

  指定表导出

--tablespaces

  指定导出的表空间列表

IMPDP导入数据

导入表 其他用户导入表,则要求该用户必须具有IMP_FULL_DATABASE或DBA角色

将表dept,emp导入到system模式

impdp system/xcn258 directory=dump_dir dumpfile=tab.dmp tables=scott.dept,scott.emp remap_schema=scott.system

导入模式 其他用户导入模式,则要求该用户必须具有IMP_FULL_DATABASE或DBA角色

impdp system/xcn258 directory=dump_dir dumpfile=schema.dmp schemas=scott remap_schema=scott.system;

导入表空间

导入全数据库

IMPDP命令参数

 --remap_schema

该参数用于将源模式中的所有对象转载到目标模式

remap_schema=sorce_schema:target_schema

--remap_tablespace

用于指定导入时更改表空间名称

remap_tablespace=source_tablespace:target_tablespace

--sqlfile

可以从dmp文件中提取DDL语句

--table_exists_action

该参数指定当表已经存在时导入作业要执行的操作

=skip| append| truncate| replace    默认是skip

--transport_datafiles

该参数用于指定移动空间时要被导入到目标数据库的数据文件

SQL*Loader工具

  可以实现将外部数据或其他数据库中的数据添加到Oracle数据库中

根据数据的存储格式,SQL*Loader所使用的数据文件可以分为两种,固定格式存储的数据和自由格式存储的数据。

固定格式:按一定规律排序,控制文件通过固定长度将数据分割

自由格式:由规定的分隔符来区分不同字段的数据

自由格式的例子:

创建一个student表,用以存储要加载的数据

create table student

(stuno number(4),

stuname varchar2(20),

sex varchar2(4),

old number(4)

);

制作一份student.txt,存储到student.txt

编辑控制文件student.ctl,确定加载方式

load data
infile 'd:\data\student.txt'
into table student
(stuno position(01:04) integer external,
stuname position(09:12) char,
sex position(13:14) char,
old position(17:19) integer external
)

sqlldr system/xcn258 control=d:\data\student.ctl log=d:\data\stu_log

---出现错误,无法打开文件

固定格式的例子:

先在EXCEL中,建立persons.csv

创建一个与excel表中对应的表persons

create table persons

(code  number(4),

name varchar2(20),

sex varchar2(4),

old number(4)

);

编辑一个控制文件persons.ctl

load data
infile 'd:\data\persons.csv'
append into table persons
fields terminated by ','
(code,name,sex,old)

sqlldr system/xcn258 control=d:\data\persons.ctl

---出现错误,无法打开文件

Oracle-数据导出和导入的更多相关文章

  1. oracle数据导出以及导入

    导出 1.服务器上mkdir创建一个真实目录/home/oracle/dump 2.sqlplus /nolog 3.conn /as sysdba; 4.SQL> create directo ...

  2. 利用PL/SQL从Oracle数据库导出和导入数据

    转自:https://www.jb51.net/article/109768.htm 本文实例为大家分享了使用PL/SQL从Oracle数据库导出和导入数据的方法,供大家参考,具体内容如下 1.导出数 ...

  3. Oracle数据泵的导入和导出

    前言 今天王子要分享的内容是关于Oracle的一个实战内容,Oracle的数据泵. 网上有很多关于此的内容,但很多都是复制粘贴别人的,导致很多小伙伴想要使用的时候不能直接上手,所以这篇文章一定能让你更 ...

  4. oracle数据导出工具sqluldr2

    oracle数据导出工具sqluldr2可以将数据以csv.txt等格式导出,适用于大批量数据的导出,导出速度非常快.导出后可以使用oracle loader工具将数据导入.下载完sqluldr2,工 ...

  5. oracle如何导出和导入数据库表

    oracle如何导出和导入数据库表 oracle如何将项目中的表导出后在导入自己的数据库中,这是一个完整的操作,对于数据库备份或在本地查看数据验证数据进场用到,一般情况下我都用dos黑窗口进行操作,简 ...

  6. oracle如何导出和导入数据库/表

    oracle如何导出和导入数据库/表 oracle如何将项目中的表导出后在导入自己的数据库中,这是一个完整的操作,对于数据库备份或在本地查看数据验证数据进场用到,一般情况下我都用dos黑窗口进行操作, ...

  7. Oracle 数据导出到PowerDesigner

    原文:Oracle 数据导出到PowerDesigner [一]配置ODBC win7 :控制面板(查看方式:小图标)→管理工具→数据源(ODBC) 在[ODBC数据源管理器]面板下,在默认[用户DN ...

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

    1.memcached命令行 telnet 127.0.0.1 11211set key2 0 30 2abSTOREDget key2VALUE key2 0 2abEND  如: set key3 ...

  9. memcached命令行、Memcached数据导出和导入

    1.memcached命令行 telnet 127.0.0.1 11211set key2 0 30 2abSTOREDget key2VALUE key2 0 2abEND  如: set key3 ...

  10. oracle表分区、表分析及oracle数据泵文件导入导出开心版

    1.先说oracle表分区是什么吧,这样吧我们来举个桃子,栗子太小,我们就不举了,我们来举个桃子. 你有500万份文件,你要把他存在磁盘上,好嘛,我们就一个文件夹,500万分文件在那儿杵着,我们想找到 ...

随机推荐

  1. 使用 VS Code 搭建 TypeScript 开发环境

    使用 VS Code 搭建 TypeScript 开发环境 TypeScript 是 JavaScript 的超集,TypeScript 只是增强了 JavaScript 而非改变了 JavaScri ...

  2. Mysql批量更新的一个坑-&allowMultiQueries=true允许批量更新

    前言        实际上,我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持,而阿福,最近就 ...

  3. Centos 7 Mysql 最大连接数超了问题解决

    错误:Can not connect to MySQL server. Too many connections  -mysql 1040错误 这是因为对 Mysql 进行访问,未释放的连接数已经达到 ...

  4. python--线程锁,队列

    #线程数据安全处理--同步锁 import time def sub(): global num print("ok") lock.acquire()#获取这把锁--->只有 ...

  5. 02 getsockopt

    #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int getsockopt(int sockfd ...

  6. 交互输入与for语句

    交互输入与for语句 1.   交互输入 read命令可以同时定义多个变量值:输入的内容默认以空格为分隔符,将值输入到对应的变量中:read尽量避免交互 如果默认值过多,最后所有的值会被赋予给最有一个 ...

  7. UTC和GMT

    UTC GMT UTC = Coordinated Universal Time. 中文名称为协调世界时. GMT = Greenwich Mean Time. 中文名称为格林尼治(平)时 UTC = ...

  8. Java大文件上传详解及实例代码

    1,项目调研 因为需要研究下断点上传的问题.找了很久终于找到一个比较好的项目. 在GoogleCode上面,代码弄下来超级不方便,还是配置hosts才好,把代码重新上传到了github上面. http ...

  9. input 禁止删除部分文字

    用label和所需的input链接,label部分就是禁止删除的部分.<input type="text" name="city" value=" ...

  10. Python_016(面向对象之属性和类方法)

    一.特性(property,setter,deleter) 1.属性:将一个方法伪装成一个属性,在代码级别上没有本质的提升,但是看起来更合理; class Person: def __init__(s ...