sqlldr的简单使用方法

合集下载

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 行加载成功。

SqlLoad的简单使用

SqlLoad的简单使用

SqlLoad的简单使⽤
sqlload的简单使⽤:
能实现: 快速导⼊⼤量数据
1.先安装oracle 客户端机器.有点⼤,600M+,
2.安装时选择管理员安装(1.1g)
3.第三步的时候我的出错了.说是环境变量校验不通过,检查环境变量的长度以及是否拥有管理员权限之后都没解决.考虑到这⾥只是⽤来导⼊数据,我选择了全部错误忽略, 最后它还是⾃动把环境变量加上了...具体原因不详
4.确保sqlldr在cmd中能使⽤了就好.
5.开始准备导⼊数据:
1.新建txt⽂件,然后把txt改为.ctl
2.打开ctl⽂件,复制以下代码:我的ctl⽂件名为:sqlload.ctl
LOAD DATA
infile 'e:\aa.csv' ## 源⽂件路径,路径不要包括中⽂
into table xx_temp ## 要导⼊的表
(
id terminated by whitespace ## id 为列名,whitespace 表⽰列之间使⽤空格来区分,如果是其他的 ‘|’ ⽅式则使⽤ terminated by '|'逗号则⽤逗号.以此类推
)
3.保存好之后,打开控制台.在控制台输⼊:
sqlldr username/password@ip或域名:端⼝/sid control=sqlload.ctl log=sqlload.out
然后回车就可以了...⽇志⽂件就在 log=sqlload.out 这⾥,,如果不指定,就默认和ctl同⼀个⽬录...⽇志主要⽤来看异常信息和导⼊的信息.
原创⽂章,转载注明出处.。

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

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: 命令行参数可以由位置或关键字指定。

相关文档
最新文档