• 售前

  • 售后

热门帖子
入门百科

Oracle 高速批量数据加载工具sql*loader使用阐明

[复制链接]
无奈的剑侠站 显示全部楼层 发表于 2021-10-26 12:12:27 |阅读模式 打印 上一主题 下一主题
SQL*Loader(SQLLDR)是Oracle的高速批量数据加载工具。这是一个非常有效的工具,可用于多种平面文件格式向Oralce数据库中加载数据。SQLLDR可以在极短的时间内加载数量巨大的数据。它有两种操纵模式。
传统路径:(conventional path):SQLLDR会利用SQL插入为我们加载数据。
直接路径(direct path):接纳这种模式,SQLLDR不使用SQL;而是直接格式化数据库块。
利用直接路径加载,你能从一个平面文件读数据,并将其直接写至格式化的数据库块,而绕过整个SQL引擎和undo生成,同时还大概避开redo生成。要在一个没有任何数据的数据库中充实加载数据,最快的方法就是接纳并行直接路径加载。

要使用SQLLDR,需要有一个控制文件(control file)。 控制文件中包罗描述输入数据的信息(如输入数据的布局、数据类型等),别的还包罗有关目的表的信息。控制文件以致还可以包罗要加载的数据。

1. 新建一个控制文件demo1.ctl,内容如下:
复制代码 代码如下:
LOAD DATA
INFILE *
INTO TABLE DEPT
FIELDS TERMINATED BY ','
(DEPTNO, DNAME, LOC )
BEGINDATA
10,Sales,Virginia
20,Accounting,Virginia
30,Consulting,Virginia
40,Finance,Virginia

LOAD DATA :这会告诉SQLLDR要做什么(在这个例子中,则指示要加载数据)。SQLLDR还可以实行CONTINUE_LOAD,也就是继续加载。
INFILE * :这会告诉SQLLDR所要加载的数据现实上包罗在控制文件本身上,如第6~10行所示。也可以指定包罗数据的另一个文件的文件名。
INTO TABLE DEPT :这会告诉SQLLDR要把数据加载到哪个表中(在这个例子中,数据要加载到DEPT表中)。
FIELDS TERMINATED BY ‘,':这会告诉SQLLDR数据的情势应该是用逗号分隔的值。
(DEPTNO, DNAME, LOC) :这会告诉SQLLDR所要加载的列、这些列在输入数据中的顺序以及数据类型。这是指输入流中数据的数据类型,而不是数据库中的数据类型。在这个例子中,列的数据类型默认为CHAR(255),这已经充足了。
BEGINDATA :这会告诉SQLLDR你已经完成对输入数据的描述,背面的行(第7~10行)是要加载到DEPT表的具体数据。
2. 创建一个空表dept
复制代码 代码如下:
create table dept
( deptno number(2) constraint dept_pk primary key,
dname varchar2(14),
loc varchar2(13)
)
/

3. 加载数据
复制代码 代码如下:
sqlldr userid=lwstest/netjava control=d:\demo1.ctl

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作