oracle的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使用小结sqlldr userid=lgone/tiger control=a.ctlLOAD DATAINFILE ’t.dat’ // 要导入的文件// INFILE ’tt.date’ // 导入多个文件// INFILE * // 要导入的内容就在control文件里下面的BEGINDATA后面就是导入的内容INTO TABLE table_name // 指定装入的表BADFILE ’c:\bad.txt’ // 指定坏文件地址************* 以下是4种装入表的方式APPEND // 原先的表有数据就加在后面// INSERT // 装载空表如果原先的表有数据 sqlloader会停止默认值// REPLACE // 原先的表有数据原先的数据会全部删除// TRUNCATE // 指定的内容和replace的相同会用truncate语句删除现存数据************* 指定的TERMINATED可以在表的开头也可在表的内部字段部分FIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’“’// 装载这种数据: 10,lg,”“"lg”“",”lg,lg“// 在表中结果: 10 lg ”lg“ lg,lg// TERMINATED BY X ’0Array’ // 以十六进制格式’0Array’ 表示的// TERMINATED BY WRITESPACE // 装载这种数据: 10 lg lg TRAILING NULLCOLS ************* 表的字段没有对应的值时允许为空************* 下面是表的字段(col_1 , col_2 ,col_filler FILLER // FILLER 关键字此列的数值不会被装载// 如: lg,lg,not 结果 lg lg)// 当没声明FIELDS TERMINATED BY ’,’ 时//(// col_1 [interger external] TERMINATED BY ’,’ ,// col_2 [date ”dd-mon-yyy“] TERMINATED BY ’,’ , // col_3 [char] TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’lg’//)// 当没声明FIELDS TERMINATED BY ’,’用位置告诉字段装载数据//(// col_1 position(1:2),// col_2 position(3:10),// col_3 position(*:16), // 这个字段的开始位置在前一字段的结束位置// col_4 position(1:16),// col_5 position(3:10)char(8)// 指定字段的类型//)BEGINDATA // 对应开始的INFILE * 要导入的内容就在control 文件里10,Sql,what20,lg,show====================================== =//////////// 注意begindata后的数值前面不能有空格***** 普通装载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 列将为空***** FIELDS TERMINATED BY WHITESPACE 和FIELDS TERMINATED BY x’0Array’ 的情况LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY WHITESPACE--FIELDS TERMINATED BY x’0Array’(DEPTNO,DNAME,LOC)BEGINDATA Sales Virginia ***** 指定不装载那一列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” ***** position的列子LOAD DATAINFILE *INTO TABLE DEPTREPLACE(DEPTNO position(1:2),DNAME position(*:16), // 这个字段的开始位置在前一字段的结束位置LOC position(*:2Array),ENTIRE_LINE position(1:2Array))BEGINDATA10Accounting Virginia,USA***** 使用函数日期的一种表达 TRAILING NULLCOLS的使用LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应// 的列的值的如果第一行改为10,Sales,Virginia,1/5/2000,就不用TRAILING NULLCOLS了(DEPTNO,DNAME “upper(:dname)”, // 使用函数LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’, // 日期的一种表达方式还有’dd-mon-yyyy’ 等ENTIRE_LINE “:deptno||:dname||:loc||:last_updated”)BEGINDATA10,Sales,Virginia,1/5/200020,Accounting,Virginia,21/6/1ArrayArrayArray30,Consulting,Virginia,5/1/200040,Finance,Virginia,15/3/2001 ***** 使用自定义的函数 // 解决的时间问题create or replacefunction my_to_date(p_string in varchar2)return dateastype fmtArray is table of varchar2(25);l_fmts fmtArray := fmtArray(’dd-mon-yyyy’, ’dd-month-yyyy’,’dd/mm/yyyy’,’dd/mm/yyyy hh24:mi:ss’);l_return date;beginfor i in 1..l_fmts.countloopbeginl_return := to_date(p_string, l_fmts(i));exceptionwhen others then null;end;EXIT when l_return is not null;end loop;if(l_return is null)thenl_return :=new_time(to_date(’01011Array70’,’ddmmyyyy’)+1/24/60/60 *p_string, ’GMT’, ’EST’);end if;return l_return;end;/LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS(DEPTNO, DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)” // 使用自定义的函数)BEGINDATA10,Sales,Virginia,01-april-200120,Accounting,Virginia,13/04/200130,Consulting,Virginia,14/04/2001 12:02:0240,Finance,Virginia,Array872682Array750,Finance,Virginia,02-apr-200160,Finance,Virginia,Not a date ***** 合并多行记录为一行记录LOAD DATAINFILE *concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录INTO TABLE DEPTreplaceFIELDS TERMINATED BY ’,’(DEPTNO, DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’)BEGINDATA10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000Virginia,1/5/2000// 这列子用 continueif list=“,” 也可以告诉sqlldr在每行的末尾找逗号找到逗号就把下一行附加到上一行LOAD DATAINFILE *continueif this(1:1)= ’-’ // 找每行的开始是否有连接字符-有就把下一行连接为一行// 如-10,Sales,Virginia,// 1/5/2000 就是一行10,Sales,Virginia,1/5/2000// 其中1:1 表示从第一行开始并在第一行结束还有continueif next 但continueif list最理想INTO TABLE DEPT replaceFIELDS TERMINATED BY ’,’(DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED date ’dd/mm/yyyy’) BEGINDATA // 但是好象不能象右面的那样使用-10,Sales,Virginia,-10,Sales,Virginia,1/5/2000 1/5/2000-40, 40,Finance,Virginia,13/04/2001Finance,Virginia,13/04/2001 ***** 载入每行的行号load datainfile *into table treplace(seqno RECNUM //载入每行的行号text Position(1:1024))BEGINDATA fsdfasj //自动分配一行号给载入表t 的seqno字段此行为 1fasdjfasdfl // 此行为 2...Array ***** 载入有换行符的数据注意: unix 和 windows 不同\\n & /n< 1 > 使用一个非换行符的字符LOAD DATAINFILE *INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS(DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)”,COMMENTS “replace(:comments,’\n’,chr(10))” // replace 的使用帮助转换换行符)BEGINDATA10,Sales,Virginia,01-april-2001,This is the Sales\nOffice in Virginia20,Accounting,Virginia,13/04/2001,This is the Accounting\nOffice in Virginia30,Consulting,Virginia,14/04/2001 12:02:02,This is the Consulting\nOffice in Virginia40,Finance,Virginia,Array872682Array7,This is the Finance\nOffice in Virginia< 2 > 使用fix属性LOAD DATAINFILE demo17.dat “fix 101”INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS(DEPTNO,DNAME “upper(:dname)”,LOC “upper(:loc)”,LAST_UPDATED “my_to_date(:last_updated)”,COMMENTS)demo17.dat 10,Sales,Virginia,01-april-2001,This is the SalesOffice in Virginia20,Accounting,Virginia,13/04/2001,This is the AccountingOffice in Virginia30,Consulting,Virginia,14/04/2001 12:02:02,This is the ConsultingOffice in Virginia40,Finance,Virginia,Array872682Array7,This is the FinanceOffice in Virginia// 这样装载会把换行符装入数据库下面的方法就不会但要求数据的格式不同LOAD DATAINFILE demo18.dat “fix 101”INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’ OPTIONALLY ENCLOSED BY ’“’TRAILING NULLCOLS(DEPTNO, DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)“,COMMENTS) demo18.dat10,Sales,Virginia,01-april-2001,”This is the SalesOffice in Virginia“20,Accounting,Virginia,13/04/2001,”This is the AccountingOf fice in Virginia“30,Consulting,Virginia,14/04/2001 12:02:02,”This is the ConsultingOffice in Virginia“40,Finance,Virginia,Array872682Array7,”This is the FinanceOffice in Virginia“< 3 > 使用var属性LOAD DATAINFILE demo1Array.dat ”var 3“// 3 告诉每个记录的前3个字节表示记录的长度如第一个记录的071 表示此记录有 71 个字节INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS(DEPTNO,DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)“,COMMENTS) demo1Array.dat07110,Sales,Virginia,01-april-2001,This is the SalesOffice in Virginia07820,Accounting,Virginia,13/04/2001,This is the AccountingOffice in Virginia08730,Consulting,Virginia,14/04/2001 12:02:02,This is the ConsultingOffice in Virginia07140,Finance,Virginia,Array872682Array7,This is the FinanceOffice in Virginia< 4 > 使用str属性// 最灵活的一中可定义一个新的行结尾符win 回车换行: chr(13)||chr(10)此列中记录是以a|\r\n 结束的select utl_raw.cast_to_raw(’|’||chr(13)||chr(10))from dual;结果 7C0D0ALOAD DATAINFILE demo20.dat ”str X’7C0D0A’“INTO TABLE DEPTREPLACEFIELDS TERMINATED BY ’,’TRAILING NULLCOLS(DEPTNO,DNAME ”upper(:dname)“,LOC ”upper(:loc)“,LAST_UPDATED ”my_to_date(:last_updated)",COMMENTS)demo20.dat 10,Sales,Virginia,01-april-2001,This is the Sales Office in Virginia|20,Accounting,Virginia,13/04/2001,This is the AccountingOffice in Virginia|30,Consulting,Virginia,14/04/2001 12:02:02,This is the ConsultingOffice in Virginia|40,Finance,Virginia,Array872682Array7,This is the FinanceOffice in Virginia|================================象这样的数据用 nullif 子句10-jan-200002350Flipper seemed unusually hungry today.10510-jan-20000ArrayArray45Spread over three meals.id position(1:3)nullif id=blanks // 这里可以是blanks 或者别的表达式// 下面是另一个列子第一行的 1 在数据库中将成为 nullLOAD DATA INFILE *INTO TABLE TREPLACE(n position(1:2)integer e xternal nullif n=’1’,v position(3:8))BEGINDATA 1020lg-----------------------------第二篇:ICC使用小结ICC使用小结(1)ICC的输入文件MilkyWay(physical library),TLUPlus文件(interconnect 文件),lib文件(logical library),netlist,constraints(sdc),floorplan文件(.fp或.def)由于ICC会使用MilkyWay数据格式,因此有必要先熟悉MilkyWay格式的产生。

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 在加载数据时会生成一个日志文件,用于记录加载过程中的错误和警告信息。

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

ORACLE中如何使用SQLLOAD批量添加数据

ORACLE中如何使用SQLLOAD批量添加数据

ORACLE中如何使用SQLLOAD批量添加数据在Oracle中,可以使用SQLLDR(SQL*Loader)工具来批量添加数据。

SQL*Loader是一个客户端工具,用于从文本文件中加载数据到Oracle表中。

以下是使用SQL*Loader批量添加数据的步骤:1. 创建一个控制文件(Control File):控制文件是一个文本文件,用于指导SQL*Loader加载数据。

它包含了数据文件的格式和数据应该如何被加载到Oracle表中的规则。

控制文件描述了目标表的结构、数据文件的格式和字段之间的映射关系。

一个控制文件可以对应多个数据文件。

2. 创建一个数据文件(Data File):数据文件是包含待加载数据的文本文件。

它可以是一个纯文本文件,也可以是包含字段分隔符的CSV或其他格式的文件。

数据文件的格式应该与控制文件中描述的格式匹配。

3.编写控制文件:控制文件是一个使用特定语法规则编写的文本文件。

它包含了以下几个部分:- LOAD DATA:指示SQL*Loader加载数据的开始。

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

-INTOTABLE:指定目标表的名称。

-FIELDSTERMINATEDBY:指定字段之间的分隔符。

-(列名1,列名2,...):指定数据文件中各个字段的映射关系。

字段的顺序和个数应该与目标表的列顺序和个数一致。

4. 运行SQL*Loader:打开终端(命令提示符或终端窗口),使用以下命令运行SQL*Loader:``````其中,`username`是Oracle用户名,`password`是密码,`database`是数据库名称,`controlfile.ctl`是控制文件的路径和名称。

5. 检查加载结果:运行完成后,SQL*Loader将输出加载的数据行数和错误行数。

如果有错误行,可以查看生成的日志文件以获得更多详细信息。

注意事项:- 在使用SQL*Loader加载数据之前,应该先创建目标表,确保表的结构与控制文件中描述的一致。

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

sqlloader使用方法

sqlloader使用方法

sqlloader使用方法SQL*Loader是Oracle数据库提供的一种用于导入数据的工具,它可以通过读取数据文件,并将数据加载到Oracle表中。

本文将详细介绍SQL*Loader的使用方法。

一、准备工作在使用SQL*Loader之前,需要进行一些准备工作。

首先,需要创建一个数据文件,该文件包含要导入的数据。

其次,需要创建一个控制文件,该文件描述了数据文件的结构以及如何将数据加载到表中。

最后,需要确保已经创建了目标表,以便将数据加载到表中。

二、创建数据文件数据文件是包含要导入的数据的文本文件。

可以使用任何文本编辑器创建数据文件,确保数据文件的格式与要导入的表的字段格式相匹配。

每条记录应该占据一行,并且字段之间使用分隔符进行分隔。

三、创建控制文件控制文件是描述如何加载数据的文件。

它指定了数据文件的位置、格式以及要加载数据的表的结构。

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

以下是一个控制文件的示例:LOAD DATAINFILE 'data.txt'INTO TABLE employeesFIELDS TERMINATED BY ','(emp_id, emp_name, emp_salary)上述示例中,LOAD DATA表示开始数据加载。

INFILE指定了数据文件的路径和名称。

INTO TABLE指定了要将数据加载到的表的名称。

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

括号中的内容是表中的字段列表,用于指定数据文件中各个字段的顺序。

四、执行SQL*Loader执行SQL*Loader需要使用命令行界面。

打开命令行界面,并进入SQL*Loader的安装目录。

然后使用以下命令执行SQL*Loader:sqlldr username/password@database control=controlfile.ctl上述命令中,username是Oracle数据库的用户名,password是密码,database是数据库的连接字符串,controlfile.ctl是控制文件的路径和名称。

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

oracle的sqlldr的使用总结part i一:sql loader 的特点oracle自己带了很多的工具可以用来进行数据的迁移、备份和恢复等工作。

但是每个工具都有自己的特点。

比如说exp和imp可以对数据库中的数据进行导出和导出的工作,是一种很好的数据库备份和恢复的工具,因此主要用在数据库的热备份和恢复方面。

有着速度快,使用简单,快捷的优点;同时也有一些缺点,比如在不同版本数据库之间的导出、导入的过程之中,总会出现这样或者那样的问题,这个也许是oracle 公司自己产品的兼容性的问题吧。

sql loader 工具却没有这方面的问题,它可以把一些以文本格式存放的数据顺利的导入到oracle数据库中,是一种在不同数据库之间进行数据迁移的非常方便而且通用的工具。

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

二:sql loader 的帮助C:\>sqlldrSQL*Loader: Release 9.2.0.1.0 - Production on 星期六10月9 14:48:12 2004Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.用法: SQLLDR keyword=value [,keyword=value,...]有效的关键字: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 specificationsparallel -- do parallel load (默认FALSE)file -- File to allocate extents fromskip_unusable_indexes -- disallow/allow unusable indexes or index partitions(默认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: 命令行参数可以由位置或关键字指定。

前者的例子是'sqlloadscott/tiger foo'; 后一种情况的一个示例是'sqlldr control=foouserid=scott/tiger'.位置指定参数的时间必须早于但不可迟于由关键字指定的参数。

例如,允许'sqlldr scott/tiger control=foo logfile=log', 但是不允许'sqlldr scott/tiger control=foo log', 即使参数'log' 的位置正确。

C:\>三:sql loader使用例子a)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)-----定义列对应顺序a、insert,为缺省方式,在数据装载开始时要求表为空b、append,在表中追加新记录c、replace,删除旧记录,替换成新装载的记录d、truncate,同上在DOS窗口下使用SQL*Loader命令实现数据的输入C:\>sqlldr userid=system/manager control=input.ctl默认日志文件名为:input.log默认坏记录文件为:input.bad2.还有一种方法可以把EXCEL文件另存为CSV(逗号分隔)(*.csv),控制文件就改为用逗号分隔LOAD DATAINFILE 'd:\car.csv'APPEND INTO TABLE t_car_tempFIELDS TERMINATED BY ","(phoneno,vip_car)b)在控制文件中直接导入数据1、控制文件test.ctl的内容-- The format for executing this file with SQL Loader is:-- SQLLDR control=<filename> Be sure to substitute your-- version of SQL LOADER and the filename for this file.LOAD DATAINFILE *BADFILE 'C:\Documents and Settings\Jackey\桌面\WMCOUNTRY.BAD'DISCARDFILE 'C:\Documents and Settings\Jackey\桌面\WMCOUNTRY.DSC'INSERT INTO TABLE EMCCOUNTRYFields terminated by ";" Optionally enclosed by '"'(COUNTRYID NULLIF (COUNTRYID="NULL"),COUNTRYCODE,COUNTRYNAME,CONTINENTID NULLIF (CONTINENTID="NULL"),MAPID NULLIF (MAPID="NULL"),CREATETIME DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (CREATETIME="NULL"), LASTMODIFIEDTIME DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (LASTMODIFIEDTIME="NULL") )BEGINDATA1;"JP";"Japan";1;9;"09/16/2004 16:31:32";NULL2;"CN";"China";1;10;"09/16/2004 16:31:32";NULL3;"IN";"India";1;11;"09/16/2004 16:31:32";NULL4;"AU";"Australia";6;12;"09/16/2004 16:31:32";NULL5;"CA";"Canada";4;13;"09/16/2004 16:31:32";NULL6;"US";"United States";4;14;"09/16/2004 16:31:32";NULL7;"MX";"Mexico";4;15;"09/16/2004 16:31:32";NULL8;"GB";"United Kingdom";3;16;"09/16/2004 16:31:32";NULL9;"DE";"Germany";3;17;"09/16/2004 16:31:32";NULL10;"FR";"France";3;18;"09/16/2004 16:31:32";NULL11;"IT";"Italy";3;19;"09/16/2004 16:31:32";NULL12;"ES";"Spain";3;20;"09/16/2004 16:31:32";NULL13;"FI";"Finland";3;21;"09/16/2004 16:31:32";NULL14;"SE";"Sweden";3;22;"09/16/2004 16:31:32";NULL15;"IE";"Ireland";3;23;"09/16/2004 16:31:32";NULL16;"NL";"Netherlands";3;24;"09/16/2004 16:31:32";NULL17;"DK";"Denmark";3;25;"09/16/2004 16:31:32";NULL18;"BR";"Brazil";5;85;"09/30/2004 11:25:43";NULL19;"KR";"Korea, Republic of";1;88;"09/30/2004 11:25:43";NULL20;"NZ";"New Zealand";6;89;"09/30/2004 11:25:43";NULL 21;"BE";"Belgium";3;79;"09/30/2004 11:25:43";NULL 22;"AT";"Austria";3;78;"09/30/2004 11:25:43";NULL 23;"NO";"Norway";3;82;"09/30/2004 11:25:43";NULL 24;"LU";"Luxembourg";3;81;"09/30/2004 11:25:43";NULL 25;"PT";"Portugal";3;83;"09/30/2004 11:25:43";NULL 26;"GR";"Greece";3;80;"09/30/2004 11:25:43";NULL 27;"IL";"Israel";1;86;"09/30/2004 11:25:43";NULL 28;"CH";"Switzerland";3;84;"09/30/2004 11:25:43";NULL29;"A1";"Anonymous Proxy";0;0;"09/30/2004 11:25:43";NULL 30;"A2";"Satellite Provider";0;0;"09/30/2004 11:25:43";NULL 31;"AD";"Andorra";3;0;"09/30/2004 11:25:43";NULL 32;"AE";"United Arab Emirates";1;0;"09/30/2004 11:25:43";NULL 33;"AF";"Afghanistan";1;0;"09/30/2004 11:25:43";NULL 34;"AG";"Antigua and Barbuda";7;0;"09/30/2004 11:25:43";NULL 35;"AI";"Anguilla";7;0;"09/30/2004 11:25:43";NULL 36;"AL";"Albania";3;0;"09/30/2004 11:25:43";NULL 37;"AM";"Armenia";3;0;"09/30/2004 11:25:43";NULL 38;"AN";"Netherlands Antilles";3;0;"09/30/2004 11:25:43";NULL 39;"AO";"Angola";2;0;"09/30/2004 11:25:43";NULL 40;"AP";"Asia/Pacific Region";2;0;"09/30/2004 11:25:43";NULL 41;"AQ";"Antarctica";8;0;"09/30/2004 11:25:43";NULL 42;"AR";"Argentina";5;0;"09/30/2004 11:25:43";NULL 43;"AS";"American Samoa";6;0;"09/30/2004 11:25:43";NULL 44;"AW";"Aruba";5;0;"09/30/2004 11:25:43";NULL 45;"AZ";"Azerbaijan";1;0;"09/30/2004 11:25:43";NULL 46;"BA";"Bosnia and Herzegovina";3;0;"09/30/2004 11:25:43";NULL 47;"BB";"Barbados";5;0;"09/30/2004 11:25:43";NULL 48;"BD";"Bangladesh";1;0;"09/30/2004 11:25:43";NULL 49;"BF";"Burkina Faso";2;0;"09/30/2004 11:25:43";NULL 50;"BG";"Bulgaria";3;0;"09/30/2004 11:25:43";NULL 51;"BH";"Bahrain";1;0;"09/30/2004 11:25:43";NULL 52;"BI";"Burundi";2;0;"09/30/2004 11:25:43";NULL 53;"BJ";"Benin";2;0;"09/30/2004 11:25:43";NULL 54;"BM";"Bermuda";4;0;"09/30/2004 11:25:43";NULL 55;"BN";"Brunei Darussalam";1;0;"09/30/2004 11:25:43";NULL 56;"BO";"Bolivia";5;0;"09/30/2004 11:25:43";NULL 57;"BS";"Bahamas";7;0;"09/30/2004 11:25:43";NULL 58;"BT";"Bhutan";1;0;"09/30/2004 11:25:43";NULL 59;"BV";"Bouvet Island";5;0;"09/30/2004 11:25:43";NULL 60;"BW";"Botswana";2;0;"09/30/2004 11:25:43";NULL 61;"BY";"Belarus";3;0;"09/30/2004 11:25:43";NULL2、执行导入命令C:\>sqlldr userid=system/manager control=test.ctlpart iiSQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.如何使用SQL*Loader 工具我们可以用Oracle的sqlldr工具来导入数据。

相关文档
最新文档