sqlldr的用法

合集下载

sqlldr使用大全

sqlldr使用大全

Oracle之sqlldr使用文档变更历史目录1.sqlldr简介 (3)2.sqlldr结构 (4)2.1. sqlldr结构图 (4)2.2. sqlldr功能描述 (5)2.3. 命令结构 (6)2.3.1. 程序参数 (6)2.4. 控制文件 (8)2.4.1. 控制文件语法 (8)2.4.2. 控制文件结构说明 (9)2.5. 数据文件 (11)2.5.1. 数据文件要求 (11)2.5.2. 数据文件内容 (11)2.6. 日志文件 (12)2.7. BAD文件 (12)2.8. DISCARD文件 (12)3.sqlldr 装载 (13)3.1. 一般装载 (14)3.1.1. 控制文件 (14)3.1.2. 数据文件 (14)3.1.3. 装载结果 (14)3.2. 指定字段长度装载 (15)3.2.1. 控制文件 (15)3.2.2. 数据文件 (15)3.2.3. 装载结果 (15)3.3. 指定类型装载 (16)3.3.1. 控制文件 (16)3.3.2. 数据文件 (16)3.3.3. 装载结果 (17)3.4. 跳过装载................................................................................. 错误!未定义书签。

3.5. 多表装载 (17)3.5.1. 控制文件 (17)3.5.2. 数据文件 (18)3.5.3. 装载结果 (18)3.6. 直接路径装载 (19)3.6.1. 控制文件 (19)3.6.2. 数据文件 (20)3.6.3. 装载结果 (20)3.7. 使用函数装载 (20)3.7.1. 控制文件 (20)3.7.2. 装载结果 (21)3.8. 多文件多表装载 (21)3.8.1. 控制文件 (22)3.8.2. 数据文件 (22)3.8.3. 装载结果 (23)3.9. 默认值装载 (23)3.9.1. 控制文件 (23)3.9.2. 数据文件 (24)3.9.3. 装载结果 (24)3.10. LOB数据装载 (24)3.10.1. 控制文件 (25)3.10.2. 数据文件 (25)3.10.3. 装载结果 (26)3.11. 外部表装载 (26)3.11.1. 装载结果 (27)1.sqlldr简介当我们在使用Oracle数据库的时候,经常需要对数据进行装载入库,而这些数据很多时候不一定是来自Oracle数据库本身,可能只是一些文本数据。

sqlldr userid写法

sqlldr userid写法

SQL*Loader 是一个用于将数据从外部文件加载到 Oracle 数据库表中的实用程序。

在使用 SQL*Loader 进行数据加载时,通常需要使用userid 参数来连接数据库并指定加载数据的用户。

那么,userid 参数的写法是怎样的呢?1. 基本语法userid 参数的基本语法如下:```sqlldr userid=username/passwordconnect_identifier```其中,username 是数据库用户的用户名,password 是该用户的密码,connect_identifier 是数据库的连接标识符。

这里需要注意的是,如果密码中包含特殊字符,那么需要使用引号将整个字符串括起来,避免密码中的特殊字符被解释成其他含义。

2. 连接到本地数据库如果要连接到本地数据库,可以使用以下语法:```sqlldr userid=用户名/密码```要连接到本地数据库的 scott 用户,密码是 tiger 的话,可以这样写:```sqlldr userid=scott/tiger```3. 连接到远程数据库如果要连接到远程数据库,就需要指定数据库的连接标识符。

连接标识符通常由数据库的 TNS 服务名称或者连接描述符组成。

语法如下:```sqlldr userid=username/passwordTNS_SERVICE_NAME```或者```sqlldruserid=username/password"(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hostname)(PORT=port))(CONNECT_DATA=( SERVICE_NAME=sid)))"```其中,TNS_SERVICE_NAME 是 TNS 服务名称,hostname 是数据库服务器的主机名,port 是数据库监听器的端口号,sid 是数据库的系统标识符。

oraclesqlldr用法

oraclesqlldr用法

oraclesqlldr用法SQLLDR是Oracle提供的一个数据加载工具,可以将平面文件中的数据批量地加载到Oracle数据库表中。

下面将详细介绍SQLLDR的用法。

1.SQLLDR的基本语法:``````其中,`<username>`是要登录的数据库用户,`<password>`是该用户的密码,`<database>`是要连接的数据库名,`<control_file>`是用来控制数据加载过程的控制文件。

2.控制文件的编写:控制文件是一个文本文件,用来指定数据文件的格式、要加载的表、数据文件的位置等信息。

控制文件的基本语法如下:```LOADDATAINFILE '<data_file>'INTO TABLE <table_name>FIELDSTERMINATEDBY','OPTIONALLYENCLOSEDBY'"'(column1, column2,...)```其中,`<data_file>`是要加载的数据文件名,`<table_name>`是要将数据加载到的表名,`FIELDS TERMINATED BY ','`指定了数据文件中的字段之间的分隔符(逗号),`OPTIONALLY ENCLOSED BY '"'`指定了数据文件中的字段是否被包围(双引号)。

括号中的`column1, column2,...`指定了要加载的表的列名,列的顺序要和数据文件中的列顺序一致。

3.数据文件的格式:数据文件是一个文本文件,每行表示一条记录,字段之间使用分隔符进行分隔。

字段的顺序要和控制文件中指定的顺序一致。

4.SQLLDR的参数:-`SKIP`:指定要跳过的记录数量。

-`BADFILE`:指定不符合加载规则的记录将被写入的文件。

oracle sqluldr用法

oracle sqluldr用法

oracle sqluldr用法
OracleSQL*Loader的用法是将大量数据从外部文件加载到Oracle数据库中。

SQL*Loader是一个命令行工具,使用其语法基于控制文件和数据文件来加载数据。

要使用SQL*Loader,必须创建一个控制文件,其中包含数据文件的描述,以及数据如何被加载到表中的说明。

以下是SQL*Loader的一些用法:
1.控制文件
控制文件是SQL*Loader的核心组件。

它描述了要加载的数据文件的结构和格式。

控制文件包含以下信息:
- 数据文件的名称和位置
- 数据字段的名称和类型
- 数据字段的分隔符和引用符
- 数据加载的表和列名称
2.数据文件
SQL*Loader使用数据文件将数据加载到数据库中。

数据文件必须与控制文件结构相匹配。

数据文件的格式可以是文本文件、定长文件或可分隔文件。

3.数据加载
使用SQL*Loader加载数据时,必须指定控制文件和数据文件的名称和位置。

以下是一个例子:
sqlldr control=mycontrol.ctl data=mydata.dat
log=mylog.log
该命令将加载mydata.dat文件中的数据到数据库中,并将日志记录到mylog.log文件中。

4.高级特性
SQL*Loader还支持高级特性,如并行加载、条件加载和转换数据。

这些特性可以提高加载数据的效率和灵活性。

总之,Oracle SQL*Loader是一个强大的工具,可用于快速加载大量数据到Oracle数据库中。

掌握其用法可以帮助开发人员提高数据处理的效率和质量。

sqlldr的使用示例

sqlldr的使用示例

Sqlldr的使用一个简单的sqlldr例子在介绍功能之前,首先我们来试用一个最简单的sqlldr例子。

前提:安装了oracle客户端。

在“开始”->“运行”,输入“cmd”,回车。

在打开的dos窗口里输入:sqlldr。

如果显示如下,就表明你已经安装了sqlldr并且使用了。

下面,我为了快速学习,先忽略参数的说明。

只管用一个简单的例子。

我在本机上安装了Linux的oracle数据库,现在先建立一个测试的表:create table tdsxhwn.tbtestsqlldr(id int,name varchar(10))然后配置一个连接服务,别名为LOCALHOST_ORCL打开PL/SQL即可看到:如果没有PL/SQL,也可以在$ORACLE_HOME\client_1\NETWORK\ADMIN\tnsnames.ora文件找到:现在,我在“D:\sqlldr”文件夹里创建两个文件:control.txt文件:data.txt然后,在刚才的dos窗口里输入:sqlldr userid=tdsxhwn/td$123@LOCALHOST_ORCL control=d:\sqlldr\control.txt log= d:\sqlldr\out.log上面sqlldr的格式是:sqlldr userid=用户/密码@服务别名control= control文件路径log=日志文件路径效果如下:我们去数据库里查一下:select * from tdsxhwn.tbtestsqlldr该结果与data.txt的数据对比,可以看出有些不太一样这时,我们到D:\sqlldr会发现有一个data.bad和out.log的文件,”*.bad”通常就是记录插入数据库失败的行,而”out.log”是我们刚才指定的日志名,打开data.bad可以看到:4##gdktcattsoftkk##name刚好这两行是没有插入到表tdsxhwn.tbtestsqlldr的。

sqlldr用法

sqlldr用法

sqlldr用法在 Oracle 数据库中,我们通常在不同数据库的表间记录进行复制或迁移时会用以下几种方法:1. A 表的记录导出为一条条分号隔开的 insert 语句,然后执行插入到 B 表中2. 建立数据库间的 dblink,然后用 create table B as select * from A@dblink where ...,或 insert into B select * from A@dblink where ...3. exp A 表,再 imp 到 B 表,exp 时可加查询条件4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导入数据,效果比起逐条 insert 来很明显第 1 种方法在记录多时是个噩梦,需三五百条的分批提交,否则客户端会死掉,而且导入过程很慢。

如果要不产生 REDO 来提高 insert into 的性能,就要下面那样做:view sourceprint?1.alter table B nologging;2.insert /* +APPEND */ into B(c1,c2) values(x,xx);3.insert /* +APPEND */ into B select * from A@dblink where .....;好啦,前面简述了 Oracle 中数据导入导出的各种方法,我想一定还有更高明的。

下面重点讲讲 Oracle 的 Sql Loader (sqlldr) 的用法。

在命令行下执行 Oracle 的 sqlldr 命令,可以看到它的详细参数说明,要着重关注以下几个参数:userid -- Oracle 的 username/password[@servicename]control -- 控制文件,可能包含表的数据-------------------------------------------------------------------------------------------------------log -- 记录导入时的日志文件,默认为控制文件(去除扩展名).logbad -- 坏数据文件,默认为控制文件(去除扩展名).baddata -- 数据文件,一般在控制文件中指定。

oracle sqlload用法

oracle sqlload用法

oracle sqlload用法SQL*Loader 是 Oracle 数据库中一个用于高效地将大量数据加载到表中的工具。

它可以从文本文件、CSV 文件或其他数据库中加载数据,并将其插入到指定的表中。

以下是SQL*Loader 的用法:1. 创建控制文件:SQL*Loader 需要一个控制文件来指定数据的格式和加载方式。

控制文件可以手动创建,也可以使用Oracle Enterprise Manager 或 SQL Developer 等工具生成。

控制文件包含以下内容:- LOAD DATA:指定数据加载的语句。

- INFILE:指定要加载的数据文件的路径和名称。

- INTO TABLE:指定要加载数据的目标表的名称。

- FIELDS TERMINATED BY:指定字段之间的分隔符。

- TRAILING NULLCOLS:指定允许空列。

- 载入的列名和列数据类型。

2. 准备数据文件:需要准备一个包含要加载的数据的文本文件。

数据文件中的每一行对应表中一条记录,字段之间使用控制文件中指定的分隔符进行分隔。

3. 运行 SQL*Loader:打开命令行终端或 SQL*Plus 窗口,使用以下命令来运行 SQL*Loader:```sqlldr username/password@database control=controlfile.ctllog=logfilename.log```- `username/password`:Oracle 数据库的用户名和密码。

- `database`:要连接的数据库实例的名称。

- `control=controlfile.ctl`:指定控制文件的路径和名称。

- `log=logfilename.log`:指定日志文件的路径和名称。

4. 检查日志文件:SQL*Loader 在加载数据时会生成一个日志文件,用于记录加载过程中的错误和警告信息。

通过查看日志文件,可以了解加载过程中是否发生了错误,并可以根据其提供的信息进行调试和修复。

sqlldr用法详解

sqlldr用法详解

sqlldr⽤法详解sqlldr⽤法举例制定控制⽂件result.ctlresult.ctl内容:load datainfile 'result.csv'into table resultxt(resultid char terminated by ',',website char terminated by ',',ipport char terminated by ',',status char terminated by whitespace) 说明: infile 指数据源⽂件 这⾥我们省略了默认的 discardfile result.dsc badfile result.bad into table resultxt 默认是INSERT,也可以into table resultxt APPEND为追加⽅式,或REPLACE terminated by ',' 指⽤逗号分隔 terminated by whitespace 结尾以空⽩分隔执⾏加载:D:\>sqlldr control=result.ctl log=resulthis.out-------------------------sqlldr⽤法详解sql loader可以把⼀些以⽂本格式存放的数据顺利的导⼊到oracle数据库中,是⼀种在不同数据库之间进⾏数据迁移的⾮常⽅便⽽且通⽤的⼯具。

缺点就速度⽐较慢,另外对blob等类型的数据就有点⿇烦了。

⽤法: SQLLDR keyword=value [,keyword=value,...]有效的关键字:userid -- ORACLE username/passwordcontrol ?C 控制⽂件log ?C 记录的⽇志⽂件bad ?C 坏数据⽂件data ?C 数据⽂件discard ?C 丢弃的数据⽂件discardmax ?C 允许丢弃数据的最⼤值 (全部默认)skip -- Number of logical records to skip (默认0)load -- Number of logical records to load (全部默认)errors ?C 允许的错误记录数 (默认50)rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认: 常规路径 64, 所有直接路径)bindsize -- Size of conventional path bind array in bytes(默认256000)每次提交记录的缓冲区的⼤⼩(字节为单位,默认256000)silent --禁⽌输出信息 (header,feedback,errors,discards,partitions)direct ?C 使⽤直通路径⽅式导⼊ (默认FALSE)parfile -- parameter file: name of file that contains parameter specificationsparallel -- 并⾏导⼊ (默认FALSE)file -- File to allocate extents from与bindsize成对使⽤,其中较⼩者会⾃动调整到较⼤者sqlldr先计算单条记录长度,乘以rows,如⼩于bindsize,不会试图扩张rows以填充bindsize;如超出,则以bindsize为准。

sqlloader的用法

sqlloader的用法

sqlloader的用法sqlldr userid=system/password control=h:control.txtuserid是用户名和密码,control是控制文件位置。

下面是控制文件中的内容:load datainfile 'h:bbb.txt'--文本文件的位置append into table table_name ---#1FIELDS TERMINA TED BY ',' ----字段和字段之间的分隔符,如果使用X'09'代表是tab,是否是tab没有测试。

TRAILING NULLCOLS ------表的字段没有对应的值时允许为空(field1,field2,field3)---具体入库的表字段#1。

这里可以使用append、insert、replace和truncate,每个参数具体意义如下:APPEND 原先的表有数据就加在后面INSERT 装载空表如果原先的表有数据sqlloader会停止默认值REPLACE 原先的表有数据原先的数据会全部删除TRUNCA TE 指定的内容和replace的相同会用truncate语句删除现存数据用sqlloader也可以一次导入多个表中只要多加几个into就可以了,具体用法和insert的插入多个表用法类似。

入库的时候格式化也是可以的,可以参照外部表那篇文章。

用法二:数据文件:test1.txtSYSTEM , 40960SYSTEM , 40960SYSTEM , 323649536SYSTEM , 81920SYSTEM , 74350592SYSTEM , 65536SYSTEM , 81920SYSTEM , 40960SYSTEM , 40960SYSTEM , 19963904SYSTEM , 90112SYSTEM , 229376ZFAD , 11526144控制文件:input.ctlload datainfile 'test1.txt'append into table sum_dba_free_spacefields terminated by ','(tablespace_name,bytes)db建表:create table sum_dba_free_space(tablespace_name varchar2(30),bytes number) c:\>sqlldr scott/tiger control=input.ctl加载失败的log(同时会产生test.bad文件):c:\input.logSQL*Loader: Release 10.2.0.4.0 - Production on 星期五10月10 01:53:43 2008 Copyright (c) 1982, 2007, Oracle. All rights reserved.控制文件: input.ctl数据文件: test1.txt错误文件: test1.bad废弃文件: 未作指定(可废弃所有记录)要加载的数: ALL要跳过的数: 0允许的错误: 50绑定数组: 64 行, 最大256000 字节继续: 未作指定所用路径: 常规表SUM_DBA_FREE_SPACE,已加载从每个逻辑记录插入选项对此表APPEND 生效列名位置长度中止包装数据类型------------------------------ ---------- ----- ---- ---- ---------------------TABLESPACE_NAME FIRST * , CHARACTER BYTES NEXT * , CHARACTER表SUM_DBA_FREE_SPACE:6984 行加载成功。

OracleSQLLoader使用说明

OracleSQLLoader使用说明

OracleSQLLoader使用说明SQL Loader的基本用法如下:2.创建数据文件:数据文件是一个文本文件,它包含要加载到数据库表中的实际数据。

数据文件的格式必须与控制文件中指定的格式一致。

3. 运行SQL Loader:在命令行中执行SQL Loader命令,指定控制文件和数据文件的路径。

可以使用不同的参数和选项来调整SQL Loader 的行为。

例如,可以指定要加载的表、要跳过的行数、要使用的数据库连接等。

4. 查看日志文件:SQL Loader会生成一个日志文件,记录加载过程中的详细信息,包括加载的行数、错误信息等。

可以查看日志文件来检查加载的结果,并根据需要做出相应的处理。

SQL Loader还提供了许多高级功能和选项,以满足各种加载需求:1. 跳过和处理错误:SQL Loader可以跳过数据文件中的错误行,并继续加载后续行。

可以使用参数控制跳过错误的行数和处理错误的方式。

2. 转换和映射数据:SQL Loader可以根据需要对数据进行转换和映射。

例如,可以将数据从一个字符集转换为另一个字符集,或者将数据映射到目标表的不同列中。

3. 并行加载:SQL Loader支持并行加载,可以同时加载多个数据文件,以提高加载速度。

可以指定并行加载的线程数和每个线程加载的数据文件。

4. 加载大对象:SQL Loader可以加载包含大对象(例如BLOB和CLOB)的数据文件。

可以使用参数控制如何处理大对象的加载。

5. 控制文件生成器:Oracle提供了一个控制文件生成器,可以根据源表的结构自动生成控制文件。

这对于大型数据库或者不熟悉控制文件语法的用户来说非常有用。

总结:Oracle SQL Loader是一个功能强大的工具,可以高效地将大量数据加载到Oracle数据库中。

它提供了丰富的参数和选项,可以满足各种加载需求。

通过控制文件和数据文件,可以灵活地定义加载的格式和目标表的结构。

无论是加载小型表还是大型表,SQL Loader都能提供快速和可靠的加载功能。

sqlldr的简单使用方法

sqlldr的简单使用方法

sqlldr的介绍SQL*LOADER是ORACLE的数据加载工具,通常用来将操作系统文件(数据)迁移到ORACLE数据库中。

SQL*LOADER是大型数据仓库选择使用的加载方法,因为它提供了最快速的途径(DIRECT,PARALLEL)。

sqlldr的执行(在UNIX下用shell来调用)$ORACLE_HOME/bin/sqlldr dwh/cognos@ORA8 control=../tmp/load.ctl$ORACLE_HOME/bin/sqlldr dwh/cognos@ORA8 control=../tmp/load.ctl direct=true log=...制定控制文件load.ctl1、控制文件标识2、要输入的数据文件名为test.txt3、向表test中(追加)记录4、指定分隔符load datainfile '/query5/Ascential/data/month/mgmid.200304M'into table DC_RPT_T_MGMID_200304M_30 append(APPEND为追加方式,或REPLACE)fields terminated by ','(userid,svcnum,brand,svcPlan,busist,hvcFlag,mntFlag,userYear,joinMonth,callfee,callfeefav,tollfee,tollfeefav,calltimes,callduration,billduration,tollduration,totalFee,groupID)导入方式************* 以下是4种装入表的方式APPEND // 原先的表有数据就加在后面INSERT // 装载空表如果原先的表有数据sqlloader会停止默认值REPLACE // 原先的表有数据原先的数据会全部删除TRUNCATE // 指定的内容和replace的相同会用truncate语句删除现存数据导入日期型字段LOAD DATAINFILE 'zlx.TXT'append INTO TABLE zlxFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'(ID,L,F,M,DATE1 date 'dd-mm-yyyy')SQLLoader将Excel 数据导出到Oracle1.创建SQL*Loader输入数据所需要的文件,均保存到C:,用记事本编辑控制文件:input.ctl,内容如下:load data--1、控制文件标识infile 'test.txt'--2、要输入的数据文件名为test.txtappend into table test--3、向表test中追加记录fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB)(id,username,password,sj)-----定义列对应顺序2.还有一种方法可以把EXCEL文件另存为CSV(逗号分隔)(*.csv),控制文件就改为用逗号分隔LOAD DATAINFILE 'd:car.csv'APPEND INTO TABLE t_car_tempFIELDS TERMINATED BY …,‟(phoneno,vip_car)在控制文件中直接导入数据1、控制文件test.ctl的内容LOAD DATAINFILE *BADFILE 'C:Documents and SettingsJackey桌面WMCOUNTRY.BAD'INSERT INTO TABLE EMCCOUNTRYFields terminated by …;‟ Optionally enclosed by '"'(COUNTRYID,COUNTRYCODE,COUNTRYNAME,CONTINENTID ,MAPID ,CREATETIME DATE …MM/DD/YYYY HH24:MI:SS‟LASTMODIFIEDTIME DAT E …MM/DD/YYYY HH24:MI:SS‟)BEGINDATA1;"JP";"Japan";1;9;"09/16/2004 16:31:32"; 2;"CN";"China";1;10;"09/16/2004 16:31:32"; 3;"IN";"India";1;11;"09/16/2004 16:31:32"; 4;"AU";"Australia";6;12;"09/16/2004 16:31:32"; 5;"CA";"Canada";4;13;"09/16/2004 16:31:32"; 6;"US";"United States";4;14;"09/16/2004 16:31:32"; 7;"MX";"Mexico";4;15;"09/16/2004 16:31:32"; 8;"GB";"United Kingdom";3;16;"09/16/2004 16:31:32"; 9;"DE";"Germany";3;17;"09/16/2004 16:31:32"; 10;"FR";"France";3;18;"09/16/2004 16:31:32"; 11;"IT";"Italy";3;19;"09/16/2004 16:31:32"; 12;"ES";"Spain";3;20;"09/16/2004 16:31:32"; 13;"FI";"Finland";3;21;"09/16/2004 16:31:32"; 14;"SE";"Sweden";3;22;"09/16/2004 16:31:32"; 15;"IE";"Ireland";3;23;"09/16/2004 16:31:32"; 16;"NL";"Netherlands";3;24;"09/16/2004 16:31:32"; 17;"DK";"Denmark";3;25;"09/16/2004 16:31:32"; 18;"BR";"Brazil";5;85;"09/30/2004 11:25:43"; 19;"KR";"Korea, Republic of";1;88;"09/30/2004 11:25:43"; 20;"NZ";"New Zealand";6;89;"09/30/2004 11:25:43"; 21;"BE";"Belgium";3;79;"09/30/2004 11:25:43"; 22;"AT";"Austria";3;78;"09/30/2004 11:25:43"; 23;"NO";"Norway";3;82;"09/30/2004 11:25:43"; 24;"LU";"Luxembourg";3;81;"09/30/2004 11:25:43"; 25;"PT";"Portugal";3;83;"09/30/2004 11:25:43";26;"GR";"Greece";3;80;"09/30/2004 11:25:43"; 27;"IL";"Israel";1;86;"09/30/2004 11:25:43"; 28;"CH";"Switzerland";3;84;"09/30/2004 11:25:43";29;"A1";"Anonymous Proxy";0;0;"09/30/2004 11:25:43"; 30;"A2";"Satellite Provider";0;0;"09/30/2004 11:25:43"; 31;"AD";"Andorra";3;0;"09/30/2004 11:25:43"; 32;"AE";"United Arab Emirates";1;0;"09/30/2004 11:25:43"; 33;"AF";"Afghanistan";1;0;"09/30/2004 11:25:43"; 34;"AG";"Antigua and Barbuda";7;0;"09/30/2004 11:25:43"; 35;"AI";"Anguilla";7;0;"09/30/2004 11:25:43"; 36;"AL";"Albania";3;0;"09/30/2004 11:25:43"; 37;"AM";"Armenia";3;0;"09/30/2004 11:25:43"; 38;"AN";"Netherlands Antilles";3;0;"09/30/2004 11:25:43"; 39;"AO";"Angola";2;0;"09/30/2004 11:25:43"; 40;"AP";"Asia/Pacific Region";2;0;"09/30/2004 11:25:43"; 41;"AQ";"Antarctica";8;0;"09/30/2004 11:25:43"; 42;"AR";"Argentina";5;0;"09/30/2004 11:25:43"; 43;"AS";"American Samoa";6;0;"09/30/2004 11:25:43"; 44;"AW";"Aruba";5;0;"09/30/2004 11:25:43"; 45;"AZ";"Azerbaijan";1;0;"09/30/2004 11:25:43"; 46;"BA";"Bosnia and Herzegovina";3;0;"09/30/2004 11:25:43"; 47;"BB";"Barbados";5;0;"09/30/2004 11:25:43"; 48;"BD";"Bangladesh";1;0;"09/30/2004 11:25:43"; 49;"BF";"Burkina Faso";2;0;"09/30/2004 11:25:43"; 50;"BG";"Bulgaria";3;0;"09/30/2004 11:25:43"; 51;"BH";"Bahrain";1;0;"09/30/2004 11:25:43"; 52;"BI";"Burundi";2;0;"09/30/2004 11:25:43"; 53;"BJ";"Benin";2;0;"09/30/2004 11:25:43"; 54;"BM";"Bermuda";4;0;"09/30/2004 11:25:43"; 55;"BN";"Brunei Darussalam";1;0;"09/30/2004 11:25:43";56;"BO";"Bolivia";5;0;"09/30/2004 11:25:43";57;"BS";"Bahamas";7;0;"09/30/2004 11:25:43";58;"BT";"Bhutan";1;0;"09/30/2004 11:25:43";59;"BV";"Bouvet Island";5;0;"09/30/2004 11:25:43";60;"BW";"Botswana";2;0;"09/30/2004 11:25:43";61;"BY";"Belarus";3;0;"09/30/2004 11:25:43";2、执行导入命令C:>sqlldr userid=system/manager control=test.ctl有效的关键字:userid -- ORACLE username/passwordcontrol -- Control file namelog -- Log file namebad -- Bad file namedata -- Data file namediscard -- Discard file namediscardmax -- Number of discards to allow (全部默认)skip -- Number of logical records to skip (默认0)load -- Number of logical records to load (全部默认)errors -- Number of errors to allow (默认50)rows -- Number of rows in conventional path bind array or between direct path data saves(默认: 常规路径64, 所有直接路径)bindsize -- Size of conventional path bind array in bytes(默认256000)silent -- Suppress messages during run(header,feedback,errors,discards,partitions)direct -- use direct path (默认FALSE)parfile -- parameter file: name of file that contains parameter specifications parallel -- do parallel load (默认FALSE)file -- File to allocate extents fromskip_unusable_indexes -- disallow/allow unusable indexes or indexpartitions(默认FALSE)skip_index_maintenance -- do not maintain indexes, mark affected indexes as unusable(默认FALSE)readsize -- Size of Read buffer (默认1048576)external_table -- use external table for load; NOT_USED, GENERATE_ONLY, EXECUTE(默认NOT_USED)columnarrayrows -- Number of rows for direct path column array(默认5000) streamsize -- Size of direct path stream buffer in bytes(默认256000)multithreading -- use multithreading in direct pathresumable -- enable or disable resumable for current session(默认FALSE)resumable_name -- text string to help identify resumable statementresumable_timeout -- wait time (in seconds) for RESUMABLE(默认7200)date_cache -- size (in entries) of date conversion cache(默认1000)PLEASE NOTE: 命令行参数可以由位置或关键字指定。

oracle sqlldr示例

oracle sqlldr示例

Oracle技术之sqlldr1、Sqllder安装:sqlldr安装借助于oracle客户端软件,在安装客户端软件的时候注意安装全,因为sqlldr包含在其中,如果不全的话将不能使用sqlldr。

2、使用sqlldr命令:在cmd命令下,输入sqlldr,如果安装正确的话,将可以显示sqlldr命令的情况,如下图所示:3、制作.ctl文件,这个文件是执行sqlldr运行的必要文件。

.ctl文件的格式基本如下:load datainfile 'c:\result.csv'replace into table resultxt(resultid char terminated by',',website char terminated by',',ipport char terminated by',',status char terminated by whitespace)4、在这里得补充二点,针对第三步中的:a)首先我们得建立数据库表resultxt,表结构可以如下:create table resultxt (resultid number(10)website varchar2(10),ipport varchar2(10),status varchar2(10));b)然后得制作.csv数据文件,这些数据将入到数据库中。

c)5、上面步骤完成后,我们就可以使用sqlldr命令来做数据入库了。

命令格式如下:sqlldr userid=dnms/dnms@DNMS control=”c:\\result.ctl”说明:c:\\result.ctl 表示控制入库的文件dnms/dnms@DNMS dnms/dnms 用户名/密码DNMS 配置的数据源正常情况将出现下图的情况:这个就表示数据正常入库。

操作过程中可能碰到的几种问题:1、control文件指定不对,导致出现下面的错误。

oracle下的sqlldr命令使用方法(sqlldr工具的使用(批量导入数据))

oracle下的sqlldr命令使用方法(sqlldr工具的使用(批量导入数据))

oracle下的sqlldr命令使⽤⽅法(sqlldr⼯具的使⽤(批量导⼊数据))sqlldr这个命令可以将⽂本中的数据⼤批量的导⼊到oracle数据库表中在win7下使⽤很简单,⾃⼰亲⾃动⼿试了下,分享给⼤家1.建⽴⼀个简单的⽂本⽂件,⽐如:testLoad.txt,内容如下:1,"test",332,"test",333,"test",334,"test",335,"test",336,"test",337,"test",338,"test",339,"test",3310,"test",332.在数据库中建⽴⼀个表,⽐如:create table emp(id number(5),name varchar2(20),age number(3),constraint pk_id primary key(id));3.建⽴⼀个简单的控制⽂件,⽐如:test.ctl,内容如下:load data--控制⽂件标识infile 'f:\testload.txt'--要输⼊的数据⽂件名appendinto table test.emp--test为⽤户名,emp为表名--向哪个表追加记录fields terminated by ','--指定分割符,终⽌字段值( id ,name ,age)4.打开cmdd命令⾏⼯具,sqlplus登录到相应的数据库,输⼊如下命令sqlldr control='f:\test.ctl' data='f:\testLoad.txt'执⾏结果显⽰记录数5.如果想记录执⾏的过程和⽇志的话,可以这么写;sqlldr control='f:\test.ctl' data='f:\testLoad.txt' log='f:\log.log'6. sqlldr⽤到的主要参数1) userid -- ORACLE username/password --数据库⽤户名/密码2)control –控制⽂件3) log –记录的⽇志⽂件4) bad –坏数据⽂件,记录错误的未加载数据5) data –数据⽂件,* data参数只能指定⼀个数据⽂件,如果控制⽂件也通过infile指定了数据⽂件,并且指定多个,则sqlldr在执⾏时,先加载data参数指定的数据⽂件,控制⽂件中第⼀个infile指定的数据⽂件被忽略,但后续的infile指定的数据⽂件继续有效6) discard –丢弃的数据⽂件7) discardmax –允许丢弃数据的最⼤值 (默认全部)8) skip --跳过记录数,从数据⽂件中,从第⼀⾏开始要计算要跳过的⾏数 (默认0)9) load -- Number of logical records to load (默认全部)10) errors –允许的错误记录数,超过则终⽌任务(默认50)11) rows -- Number of rows in conventional path bind array or between direct path data saves(每次提交的记录数,默认:常规路径64,直接路径全部,所以使⽤直接路径的话,效率会⽐普通的好太多太多)12) bindsize -- Size of conventional path bind array in bytes(每次提交记录的缓冲区的⼤⼩,字节为单位,默认256000)13) silent --禁⽌输出信息(header,feedback,errors,discards,partitions)14) direct –使⽤直通路径⽅式导⼊(默认FALSE)如果表中有索引的话,是不能指定direct=TRUE的,除⾮使⽤skip_index_maintenance=TRUE,这个就是在导⼊的时候忽略索引,所以在数据导⼊完毕以后,查看索引的状态应该都是⽆效的,需要重建之,如下SQL:select * from dba_indexes where table_name='?' ;alter idnex index_name rebuild ;重新建⽴索引要⽐新建索引快。

oracle sqlldr条件

oracle sqlldr条件

oracle sqlldr条件在Oracle中,SQLLoader是一个用于将数据从外部文件加载到Oracle数据库表中的实用程序。

SQLLoader使用控制文件来指导加载过程,并且可以根据特定条件来加载数据。

以下是关于SQLLoader条件的一些重要信息:1. 条件加载,SQLLoader允许你使用条件语句来指定加载数据的条件。

这意味着你可以根据数据文件中的特定值或模式来决定是否加载数据,以及如何加载数据。

2. 条件语法:在控制文件中,你可以使用SQLLoader的条件语法来指定条件加载。

条件语法通常使用WHEN子句,例如:LOAD DATA.INFILE 'data.csv'。

INTO TABLE my_table.WHEN (condition)。

FIELDS TERMINATED BY ','。

(column1, column2)。

3. 条件示例,例如,你可以指定只有当数据文件中的某一列满足特定条件时才加载数据,或者根据多个列的组合条件来决定是否加载数据。

4. 多条件加载,你还可以结合多个条件来实现更复杂的加载逻辑。

这可以通过逻辑运算符(如AND、OR)来组合多个条件来实现。

5. 错误处理,在条件加载时,你可以使用SQLLoader的错误处理功能来处理不符合条件的数据。

例如,你可以将不符合条件的数据记录为错误或者忽略它们。

总之,SQLLoader允许你根据特定条件来加载数据,这为你提供了灵活性和控制力,以确保只有符合条件的数据被加载到数据库表中。

当然,在使用条件加载时,需要仔细考虑加载逻辑和条件语句的编写,以确保数据加载的准确性和完整性。

SQLServer辅导:SQLLDR的使用方法

SQLServer辅导:SQLLDR的使用方法

⽤于将格式化的⽂本数据上载到表中去 以表emp为例 ⾸先编写⼀个控制命令的脚本⽂件,通常以ctl结尾,内容如下: emp.ctl load data append into table emp fields terminated by '' ( no float external, name char(20), age integer external, duty char(1), salary float external, upd_ts date(14) 'YYYYMMDDHH24MISS' ) 括号⾥对数据⽂件⾥每个数据域进⾏解释,以此在上载时与⽬标表进⾏⽐对。

除了append外,还有insert、replace、truncate等⽅式,与append⼤同⼩异,不作更多的解释。

再将上载数据组织成数据⽂件,通常以dat结尾,内容如下: emp.dat 100000000001Tom000020100000000500020020101000000 100000000002Jerry000025200000000800020020101235959 分隔符要与ctl⽂件中fields terminated by指定的⼀致,这个例⼦中为"" ctl和dat⽂件就绪后可以执⾏上载,命令为: sqlldr dbuser/oracle control=emp.ctl data=emp.dat 也可以将dat⽂件合并在ctl⽂件中,ctl⽂件改写为: emp2.ctl load data infile * append into table emp fields terminated by '' ( no float external, name char(20), age integer external, duty char(1), salary float external, upd_ts date(14) 'YYYYMMDDHH24MISS' ) begindata 100000000003Mulder000020100000000500020020101000000 100000000004Scully000025200000000800020020101235959 控制⽂件中infile选项跟sqlldr命令⾏中data选项含义相同,如使⽤infile *则表明数据在本控制⽂件以begin data开头的区域内。

SQLLDR应用举例

SQLLDR应用举例

SQLLDR应用举例1、普通装载LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'(DEPTNO,DNAME,LOC)BEGINDATA10,Sales,"""USA"""20,Accounting,"Virginia,USA"30,Consulting,Virginia40,Finance,Virginia50,"Finance","",Virginia --loc 列将为空60,"Finance",,Virginia --loc 列将为空注:BEGINDATA后的数值前面不能有空格2、TERMINATED BY WHITESPACE 和FIELDS TERMINATED BY x'09' 的情况LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY WHITESPACE--FIELDS TERMINATED BY x'20'(DEPTNO,DNAME,LOC)10 Sales Virginia注:x'20'表示字符ASCII码的16进制数值3、指定不装载那一列LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'(DEPTNO,FILLER_1 FILLER, --下面的 "Something Not To Be Loaded" 将不会被装载 DNAME,LOC)BEGINDATA20,Something Not To Be Loaded,Accounting,"Virginia,USA"4、position的列子LOAD DATAINFILE *INTO TABLE DEPTREPLACE(DEPTNO position(1:2),DNAME position(*:16), --这个字段的开始位置在前一字段的结束位置LOC position(*:29),ENTIRE_LINE position(1:29))BEGINDATA10Accounting Virginia,USA结果:10 | Accounting Vir | ginia,USA | 10Accounting Virginia,USA5、使用函数日期的一种表达TRAILING NULLCOLS的使用INFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ','TRAILING NULLCOLS--这句的意思是将没有对应值的列都置为null--如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了(DEPTNO,DNAME "upper(:dname)", --使用函数LOC "upper(:loc)",LAST_UPDATED date 'dd/mm/yyyy', --日期的一种表达方式。

sqlldr使用

sqlldr使用
external_table -- 使用外部表进行加载; NOT_USED, GENERATE_ONLY, EXECUTE (默认 NOT_USED)
columnarrayrows -- 直接路径列数组的行数 (默认 5000)
streamsize -- 直接路径流缓冲区的大小 (以字节计) (默认 256000)
fields terminated by ',' --指定用逗号分隔
OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS --表的字段没有对应值时允许为空
*************下面是表的字段
(
COVERAGE_CODE,
PRODUCT_NO,
三、SQL*LOADER实例控制文件脚本实例:
load data --控制文件表示
infile 'e:\aa.csv' --有导入的数据文件名
append into table TBL_SYNC_CORE_INSURANCE --向表TBL_SYNC_CORE_INSURANCE中追加记录
五、补充在Linux下使用 sqlldr 的注意事项在执行 sqlldr 前,需要进行以下步骤
设置 ORACLE_HOME 环境变量,如 export ORACLE_HOME=/usr/lib/oracle/xe/app/oracle/product/10.2.0/server
设置ORACLE编码格式,将本地字符集和ORACLE字符集设置为一致,如export NLS_LANG="SIMPLIFIED CHINESE_CHINA.AL32UTF8"

SQLLoader 详细使用教程

SQLLoader 详细使用教程

SQL*Loader 详细使用教程SQL*Loader是Oracle提供的用于数据加载的一种工具,它比较适合业务分析类型数据库(数据仓库),能处理多种格式的平面文件,批量数据装载比传统的数据插入效率更高。

其示意图如下:控制文件(Control File) (.ctl):用于控制数据导入的行为方式的文件(最重要的文件)参数文件(可选)(Parameter File) (.par):可以把参数直接写在控制文件里,也可以单独写一个参数文件数据文件(Data Files) :放置源数据的平面文件(可以一次性导入多个数据文件)坏文件(Bad File) (.bad):在数据加载时,把无法正确加载的数据放入错误文件中(比如数据格式、数据类型问题等)丢弃文件(可选)(Discard File) (.dsc):有些数据,虽然数据格式、数据类型没有问题,但它被逻辑条件过滤掉了(由控制文件WHEN设置),会被放入丢失文件日志文件(Log File) (.log):记录SQL*Loader的数据加载过程SQL*Loader的数据加载方式SQL*Loader支持3种数据加载方式,分别是:∙传统路径加载(direct=false):等同于insert语句∙直接路径加载(direct=true):绕过SGA,把数据直接导入高水位线(HWM)以上,可设置并行加载,性能比传统路径加载更高,但限制也更多∙外部表加载(较少用):先为数据文件上创建一个外部表,然后再把数据从外部表insert 到目标表中数据文件的记录格式从SQL*Loader的角度来看,数据文件里的数据是以记录组织的,分为以下三种记录格式(由控制文件的INFILE参数设置):定长记录格式这种方式灵活性最差,但性能却最好,它的语法如下:INFILE datafile_name "fix n"表示数据文件里的每个记录定长为n个字节。

变长记录格式INFILE "datafile_name" "var n"变长记录分为两个部分:记录长度和记录本身,看下面这个例子:load datainfile 'example.dat' "var 3"into table examplefields terminated by ',' optionally enclosed by '"'(col1 char(5),col2 char(7))example.dat:009hello,cd,010world,im,012my,name is,var 3 表示记录长度为3个字节,紧跟其后的就是记录本身,上例中,第一个记录长度为9个字节(009),值为其后的9个字节(hello,cd,);第二个记录长度为10个字节(010),值为其后的10个字节(world,im,\n),\n表示第一行行尾的换行符;以此类推。

oracle sqlloader用法

oracle sqlloader用法

oracle sqlloader用法Oracle SQL*Loader是一个数据加载工具,用于将大量的数据从外部文件(如文本文件、CSV文件)加载到Oracle数据库中。

SQL*Loader的基本用法如下:1. 创建一个控制文件(control file),控制文件指定了数据文件的格式、目标表的结构以及加载时的行为规则。

控制文件通常是一个文本文件,可以使用任何文本编辑器创建和编辑。

2. 编写控制文件时需要指定以下信息:- LOAD DATA:表示接下来的数据将被加载。

- INFILE:指定数据文件的路径和文件名。

- INTO TABLE:指定目标表的名字。

- FIELDS TERMINATED BY:指定字段之间的分隔符。

- TRAILING NULLCOLS:表示允许目标表中的列接受空值。

- (列1, 列2, …):指定数据文件中每行数据对应的目标表的列。

3. 保存控制文件,并在命令行中使用sqlldr命令执行它。

例如: ```sqlldr userid=<用户名>/<密码> control=<控制文件路径和文件名> log=<日志文件路径和文件名>```其中,`<用户名>`和`<密码>`是登录Oracle数据库的用户名和密码,`<控制文件路径和文件名>`是控制文件的路径和文件名,`<日志文件路径和文件名>`是执行日志的路径和文件名。

4. 执行sqlldr命令后,SQL*Loader会根据控制文件加载数据,并生成一个执行日志。

5. 查看执行日志,判断数据加载是否成功。

需要注意的是,在使用SQL*Loader加载数据之前,需要先创建目标表,以确保加载的数据能够正确地插入到表中。

另外,控制文件中也可以指定其他高级的加载选项,例如数据转换、条件过滤等,以满足不同的数据加载需求。

详细的用法和选项可以参考Oracle官方文档。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

酱油是oracle菜鸟,贴出来一些学习的笔记,希望大神指点指点sqlldr导数据的时候,如果数据文件有一堆空格,可以这么整几个sqlplus的设置set termout off; 是否在屏幕上显示输出内容,off屏幕不显示查询语句,主要与spool结合使用set feedback off; 关闭本次sql命令处理的记录条数,默认为on即去掉最后的已经选择的行数set echo off; 关闭脚本中正在执行的SQL语句的显示set heading off; 关闭标题的输出,设置为off就去掉了select结果的字段名只显示数据set trimout on; 去除标准输出每行后面多余的空格set trimspool on; 将每行后面多余的空格去掉【linesize-实际字符数=多余空格】各个参数属性load datainfile '/home/oracle/sql_loader/test.txt' 待加载的数据文件badfile '/home/oracle/sql_loader/test_bad.txt' 格式不匹配写入坏文件discardfile'/home/oracle/sql_loader/test_discard.txt' 条件不匹配写入丢弃文件append into table test_loader 追加的方式插入数据fields terminated by "," 字段与字段之间的分隔符trailing nullcols 这句的意思是将没有对应值的列都置为null (owner,object_name,object_id,object_type) 数据插入的对应字段load datainfile '/home/oracle/emp.txt'badfile '/home/oracle/bad.txt'discardfile '/home/oracle/dis.txt'appendinto table t1fields terminated by ","trailing nullcols(empno "trim(:empno)",ename"trim(:ename)")(1)直接加载比传统加载效率要高(2)不扫描原来的空数据块(3)不需要sql解析,减少系统的负载(4)不经过SGA,而传统加载时经过SGA;(5)不走DBWR进程,走自己的专属进程,所以速度快直接加载限制:(1)不能加载簇表(2)锁定整个表,在表上有活动事务的时候不能加载直接加载特点:(1)直接加载是在所有数据块后面加载新数据块,修改高水位线,不扫描原来的空数据块。

(2)直接加载只产生一点点的管理redo,因为要修改数据字典(也可以讲不产生redo)。

(3)回滚,如果加载失败把新分配数据块抹掉就行了。

(4)无需SGA,无需SQL解析,无需DBWR进程SCOTT@POD>select owner||','||object_name||','||object_type from dba_objects where rownum<50001; 把object里的东西导进表里load datainfile '/home/oracle/sqlldr/test.txt'badfile '/home/oracle/sqlldr/bad.log'appendinto table testfields terminated by ','optionally enclosed by '"'trailing nullcols(owner "trim(wner)",object_name"trim(bject_name)",object_type"trim(bject_name)")默认加载[oracle@POD sqlldr]$ sqlldr scott/tiger control='/home/oracle/sqlldr/load.ctl'导入的时候触发commit point...Commit point reached - logical record count 48864Commit point reached - logical record count 48928Commit point reached - logical record count 48992Commit point reached - logical record count 49056Commit point reached - logical record count 49120Commit point reached - logical record count 49184Commit point reached - logical record count 49248Commit point reached - logical record count 49312Commit point reached - logical record count 49376Commit point reached - logical record count 49440Commit point reached - logical record count 49504Commit point reached - logical record count 49568Commit point reached - logical record count 49632Commit point reached - logical record count 49696Commit point reached - logical record count 49760Commit point reached - logical record count 49824Commit point reached - logical record count 49888Commit point reached - logical record count 49952Commit point reached - logical record count 50001...看下日志里的信息SQL*Loader: Release 11.2.0.1.0 - Production on Tue Mar 18 17:21:20 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. Control File: /home/oracle/sqlldr/load.ctlData File: /home/oracle/sqlldr/test.txtBad File: /home/oracle/sqlldr/bad.logDiscard File: none specified(Allow all discards)Number to load: ALLNumber to skip: 0Errors allowed: 50Bind array: 64 rows, maximum of 256000 bytesContinuation: none specifiedPath used: ConventionalTable TEST, loaded from every logical record.Insert option in effect for this table: APPENDTRAILING NULLCOLS option in effectColumn Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- OWNER FIRST * , O(") CHARACTER SQL string for column : "trim(wner)"OBJECT_NAME NEXT * , O(") CHARACTER SQL string for column : "trim(bject_name)"OBJECT_TYPE NEXT * , O(") CHARACTER SQL string for column : "trim(bject_name)"Record 50001: Discarded - all columns null.Table TEST:50000 Rows successfully loaded.0 Rows not loaded due to data errors.0 Rows not loaded because all WHEN clauses were failed.1 Row not loaded because all fields were null.Space allocated for bind array: 49536 bytes(64 rows)Read buffer bytes: 1048576Total logical records skipped: 0Total logical records read: 50001Total logical records rejected: 0Total logical records discarded: 1Run began on Tue Mar 18 17:21:20 2014Run ended on Tue Mar 18 17:21:23 2014Elapsed time was: 00:00:02.79CPU time was: 00:00:00.17再用直接加在[oracle@POD sqlldr]$ sqlldr scott/tiger control='/home/oracle/sqlldr/load.ctl' direct=true SQL*Loader: Release 11.2.0.1.0 - Production on Tue Mar 18 17:28:32 2014 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.Control File: /home/oracle/sqlldr/load.ctlData File: /home/oracle/sqlldr/test.txtBad File: /home/oracle/sqlldr/bad.logDiscard File: none specified(Allow all discards)Number to load: ALLNumber to skip: 0Errors allowed: 50Continuation: none specifiedPath used: DirectTable TEST, loaded from every logical record.Insert option in effect for this table: APPENDTRAILING NULLCOLS option in effectColumn Name Position Len Term Encl Datatype ------------------------------ ---------- ----- ---- ---- --------------------- OWNER FIRST * , O(") CHARACTER SQL string for column : "trim(wner)"OBJECT_NAME NEXT * , O(") CHARACTER SQL string for column : "trim(bject_name)"OBJECT_TYPE NEXT * , O(") CHARACTER SQL string for column : "trim(bject_name)"Record 50001: Discarded - all columns null.Table TEST:50000 Rows successfully loaded.0 Rows not loaded due to data errors.0 Rows not loaded because all WHEN clauses were failed.1 Row not loaded because all fields were null.Bind array size not used in direct path.Column array rows : 5000Stream buffer bytes: 256000Read buffer bytes: 1048576Total logical records skipped: 0Total logical records read: 50001Total logical records rejected: 0Total logical records discarded: 1Total stream buffers loaded by SQL*Loader main thread: 19 Total stream buffers loaded by SQL*Loader load thread: 8Run began on Tue Mar 18 17:28:32 2014Run ended on Tue Mar 18 17:28:32 2014Elapsed time was: 00:00:00.49CPU time was: 00:00:00.17时间省了不少在配置文件中可以加上控制每多少行提交一次,最多多少错行后取消执行OPTIONS(ERRORS=500,ROWS=100000)小结:经过比对direct比conventional要提高了20倍效率,区别如下Direct 特点(1)数据绕过SGA直接写入磁盘的数据文件(2)数据直接写入高水位线HWM之后的新块,不会扫描HWM之前的空闲块(3)commit之后移动HWM他人才能看到(4)不对已用空间进行扫描(5)使用direct几乎不产生redo log,不是完全不产生(安全性差),但会产生undo数据(6)适用OLAP在线分析场景,增删改不频繁的场景Conventional传统加载特点(1)数据先加载-> SGA -> 磁盘的数据文件(2)会扫描高水位线HWM之前的数据块,如果有空闲块(碎片经常DML导致)就会利用,如果没有再插入新块(3)高水位线HWM之前的数据块是放在SGA区的(4)会产生redo log和undo数据(5)安全性高,可恢复数据(6)传统加载与SQL语句insert插入没区别。

相关文档
最新文档