oracle数据泵及sqlldr

时间:2024-03-29 13:56:34

 

ORALCE 数据泵导入导出数据:

 

导出:

1、从cmd中以dba权限登录数据库:sqlplus system/密码@orcl as sysdba;

2、创建目录:create directory testoutput as 'e:\test';

3、授权:grant read,write on DIRECTORY testoutput to SYS;

oracle数据泵及sqlldr

4、对应第二步所创建的目录,在数据库服务端的e盘新建文件夹test;

5、退出数据库登录:quit;

6、导出:

Expdp [用户名]/[密码]@[主机字符窜] full=y directory=TEST dumpfile=X.dmp logfile=X.log

执行完以上两步后,即可在e://testoutput文件夹下看到导出的数据文件X.dmp,以及导出日志X.log。

示例命令:

Expdp XREPORT/[email protected] directory=testoutput dumpfile=20200704.dmp logfile=20200704.log FULL=y; oracle数据泵及sqlldr

等待处理完毕后,在e:\testoutput 文件夹中即可查看到文件。

导入:与导出的前面5步相同

1、从cmd中以dba权限登录数据库:sqlplus system/密码@orcl as sysdba;

2、创建目录: Create directory testoutput as 'e:\test';

3、授权:grant read,write on DIRECTORY testoutput to SYS;

4、对应第二步所创建的目录,在数据库服务端的e盘新建文件夹testoutput;

5、退出数据库登录:quit;

6、将待导入的数据文件放在导入数据库服务端的e盘下testoutput文件夹中;

oracle数据泵及sqlldr

7、导入:

impdp [用户名]/[密码]@[主机字符窜] full=y directory=TEST dumpfile=X.dmp logfile=X.log ignore=y;

示例命令:

impdp system/[email protected] directory=xreport dumpfile=XREPORT_20200515.dmp logfile = oracleImpdp20161103.log FULL=y ignore=y;

注意:若是第一次导入需要在导入前创建数据空间:

示例命令:

CREATE TABLESPACE XREPORT_DATA DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\XREPORT_DATA01.DBF' SIZE 30G autoextend on maxsize unlimited segment space management auto;

CREATE TABLESPACE XREPORT_INDEX DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\XREPORT_INDEX01.DBF' SIZE 20G;

 

整理后的导入命令如下:

CREATE TABLESPACE XREPORT_DATA DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\XREPORT_DATA01.DBF' SIZE 30G autoextend on maxsize unlimited segment space management auto;

CREATE TABLESPACE XREPORT_INDEX DATAFILE 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\XREPORT_INDEX01.DBF' SIZE 20G;

 

创建Directory文件

select * from dba_data_files;

 

create directory DDUMPDIR as 'E:\dumpdir'

create user XREPORT identified by XREPORT;

grant dba to XREPORT;

 

导入dmp文件,还原数据库文件,打开cmd 输入一下命令:

impdp xreport/xreport directory=DDUMPDIR dumpfile=XREPORT_20200515.DMP

 

下面两个imp的命令可供参考:

imp xreport/xreport file='D:\dumpdir\xpadcData20190630.dmp' tables=XPADC_LCCPXSMX

imp xpadb/xpadb file='E:\ORADATA\XPADC\xpad702.dmp'  full=y

 

 

 

  • SQLLDR加载文件
  1. Sqlldr在哪

sqlldr加载文件主要依赖sqlldr.exe进行操作,该文件和sqlplus.exe位于同一目录中,我的文件位置为:E:\oracle\product\11.2.0\dbhome_1\BIN\文件夹下

  1. Sqlldr是什么,能干什么

Sqlldr为SqlLoader的简写,主要是负责将指定文件中的数据按照指定的策略方式,导入到数据库中。当然,这一步骤通过使用java等 【按行读取文件->根据分隔符split->实例化对象或填充Map->调用持久层框架将数据持久化到数据库中】来实现相同的功能。两者的区别在于,java更轻量级,在小数据量时更轻便灵活,且适配任意数据库。而sqlldr更重量级,配置相较于java略加繁琐,只针对Oracle数据库,但效率却更高。

  1. Sqlldr的格式1

Sqlldr致力于导入外部文件中的数据,因此sqlldr要求需要一个后缀名为.ctl的控制文件。该文件中定义一些对文件的读取策略。.ctl文件中必须包含策略格式。

一个简单的.ctl文件如下

 

LOAD DATA

INFILE *

APPEND INTO TABLE DATA

FIELDS TERMINATED BY ","

(COLUMN1,COLUMN2,COLUMN3,COLUMN4)

BEGINDATA

1,1,1,1

2,2,2,2

3,3,3,3

4,4,4,4

 

第二行的星号*表示数据文件在该控制文件中,如果将数据单独分开作为一个文件,这里将换为路径(具体见第三点)

第三行INTO TABLE DATA中的DATA是需要导入数据的表名,最前方是数据插入的方法:

INSERT(缺省时默认取值) 表在非空的时候进行数据插入的操作

oracle数据泵及sqlldr

APPEND  向表中追加数据

REPLACE   代替->首先清空表中的数据,重新进行写入

第四行定义每个字段之间的分割方式。

第五行提供了对齐的列名。

第六行是数据开始的标志。

接下来每一行都是按行待处理的数据。

 

  1. Ctl的格式2(独立数据文件与控制文件)

LOAD DATA

INFILE 'C:\Users\dell\Desktop\Oracle\Project\2019.03.18\loadData.dat'

APPEND INTO TABLE DATA

FIELDS TERMINATED BY ","

(COLUMN1,COLUMN2,COLUMN3,COLUMN4)

 

相比与第一种,在第二行中绝对定位到数据文件的位置。其他地方和第一种相似。

 

  1. 使用sqlldr

格式:SQLLDR 用户名/密码 CONTROL=文件路径,

其中,这里的文件路径不用加引号。

示例:sqlldr userid=XREPORT/[email protected] control=E:\ctlcfg\CUSM.ctl

使用sqlldr导入数据时,也会产生执行日志和错误日志等, 可手动定位日志路径

log=E:\ctlcfg\0191460D.i2220251215.log bad=E:\ctlcfg\0191460D.i2220251215.bad。

Log定义success日志,bad存放错误日志。

组合在一起后格式为:sqlldr userid=XREPORT/[email protected] control=E:\ctlcfg\CUSM.ctl log=E:\ctlcfg\0191460D.i2220251215.log bad=E:\ctlcfg\0191460D.i2220251215.bad。