Oracle数据库使用SQL Loader导入外部数据的方法详解

合集下载

Oracle使用SqlLoad导入Excel大数据操作方法

Oracle使用SqlLoad导入Excel大数据操作方法

Oracle使用SqlLoad导入Excel大数据操作方法第一步:按excel格式整理需要导入的源数据第二步:将excel表格另存为csv(逗号分割)格式。

第三步:用文本方式打开impfile.ctrl文件,修改里面的infile行为文件实际存放路径和名称,比如:infile 'c:\cust.csv'第四步:用文本方式打开impfile.ctrl文件,修改append into table 行后面加上要导入的表明,例如:append into table if_imp_card第五步:用文本方式打开impfile.ctrl文件,修改TRAILING NULLCOLS下面文本内容为表对应的字段和分割符(terminated by ','),最后一个字段用(terminated by whitespace),对于日期类型要在字段后定义上日期类型格式(Date(10) "YYYY-MM-DD"),例如:TRAILING NULLCOLS(oldtype terminated by ',',cardno terminated by ',',cardpwd terminated by ',',trackinfo terminated by ',',oldmkt terminated by ',',name terminated by ',',sex terminated by ',',cardflag terminated by ',',birthday Date(10) "YYYY-MM-DD" terminated by ',',idtype terminated by ',',idno terminated by ',',mindate Date(10) "YYYY-MM-DD" terminated by ',',maxdate Date(10) "YYYY-MM-DD" terminated by ',',ljjf terminated by ',',jfye terminated by ',',xfje terminated by ',',lczhye terminated by ',',flqye terminated by ',',addr terminated by ',',zipcode terminated by ',',tel terminated by ',',mobile terminated by whitespace)第六步:将impfile.ctl文件和要导入的csv数据文件拷贝到同一目录下,建议存放在盘符根目录;第七步:在CMD命令中输入oracle安装的bin路径,执行该命令执行如下指令:sqlldr userid=用户名/用户密码@数据库实例control=c:\impfile.ctl log=c:\impfile.log例如:D:\app\product\11.2.0\dbhome_1\BIN>sqlldr userid=dbusrif/future@crmls control=c:\impfile.ctl log=c:\impfile.log。

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数据库中。

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

Txt文件导入oracle数据库方法

Txt文件导入oracle数据库方法

Txt文件导入oracle数据库方法在Oracle数据库中,可以使用SQL*Loader工具或者外部表的方式将文本文件(.txt文件)导入到数据库。

下面我将为你详细介绍这两种方法。

方法一:使用SQL*Loader工具导入txt文件1.创建控制文件控制文件是SQL*Loader用来定义数据导入规则的文件。

它描述了数据文件的格式、目标表的结构,以及导入时的数据转换和验证规则。

例如,假设我们要将一个txt文件中的数据导入到名为EMP的表中,EMP表的结构如下:CREATETABLEEMPEMPNONUMBER(4),ENAMEVARCHAR2(10),JOBVARCHAR2(9),MGRNUMBER(4),HIREDATEDATE,SALNUMBER(7,2),COMMNUMBER(7,2),DEPTNONUMBER(2)我们可以创建一个名为emp.ctl的控制文件,内容如下:LOADDATAINFILE 'emp.txt'APPENDINTOTABLEEMPFIELDS TERMINATED BY ',' optionally enclosed by '"'EMPNO,ENAME,JOB,MGR,HIREDATECHAR"YYYY-MM-DD",SAL,COMM,DEPTNO2.准备数据文件在导入数据之前,需要将数据准备好并保存为一个txt文件(如emp.txt)。

确保数据文件的每一行与控制文件中的字段一一对应,并且字段之间以逗号分隔,如下所示:7902,SMITH,CLERK,7901,1980-12-17,800,,207369,ADAMS,CLERK,7876,1983-01-12,1100,,20...3. 使用SQL*Loader导入数据打开命令行窗口(或终端),输入以下命令导入数据:其中,username是数据库用户名,password是数据库密码,database是数据库实例名。

使用sqlldr命令导入资料到Oracle数据库表中的示例说明

使用sqlldr命令导入资料到Oracle数据库表中的示例说明

使⽤sqlldr命令导⼊资料到Oracle数据库表中的⽰例说明CSV: Comma-Separated Values(逗号分隔值)的缩写,是以逗号分隔字段的多⾏⽂本⽂件sqlldr 是sql*loader的缩写,此⼯具在安装完整版的Oracle客户端后就有使⽤sqllldr可以将有规律的⽂本数据(如csv)导⼊数据表导⼊⽰例:将csv⽂本⽂件andon.txt导⼊到manpowertest中的testandon表中testandon表结构create table TESTANDON(build_no VARCHAR2(5),device_no VARCHAR2(5),btn_no VARCHAR2(5),flag VARCHAR2(1),data_time DATE --此为时间格式,导⼊时要作特殊处理)1、⽤记事本或其它⽂本软件创建⼀个.ctl导⼊控件⽂件,此处以C:\andon.ctl为例,内容为OPTIONS(SKIP=1) --跳过1⾏,即跳过csv⽂件的第⼀⾏表头不导⼊load datainfile 'C:\andon.txt' --要导⼊的csv⽂本的路径append into table manpowertest.testandon --要导⼊到数据库中哪个表fields terminated by "," --要导⼊的⽂本是以什么符号分隔字段的,这⾥是逗号(build_no, --要导⼊到表中的哪些字段device_no,btn_no,flag,data_time timestamp "yyyy-mm-dd hh24:mi:ss" --由于数据表中此字段类型为date类型,并⾮⽂字类型,使⽤timestamp "yyyy-mm-dd hh24:mi:ss"进⾏格式转换)2、在cmd中执⾏sqlldr命令如下sqlldr userid=manpowertest/manpowertest@ora32 control=c:\andon.ctl log=c:\andon.log附檔1:andon.txt栋号,设备号,按钮代码,开关状态,触发时间A2-1,4,2,1,2014-10-29 15:14:13A2-1,30,2,0,2014-10-29 14:51:36A2-2,10,2,0,2014-10-29 14:18:53A2-2,11,2,0,2014-10-29 15:11:07A2-2,12,2,0,2014-10-29 14:40:13附檔2:andon.ctLOPTIONS(SKIP=1)load datainfile 'C:\andon.txt'append into table manpowertest.testandon fields terminated by ","(build_no,device_no,btn_no,flag,data_time timestamp "yyyy-mm-dd hh24:mi:ss")。

sqlloader导出数据和导入数据

sqlloader导出数据和导入数据

sqlloader导出数据和导⼊数据分类: Oracle忙了⼀天终于把sqlloader导出数据和导⼊数据弄清楚了,累死俺了。

这个总结主要分为三个⼤部分,第⼀部分(实例,主要分两步),第⼆部分(参数⼩总结),第三部分(完全参数总结)第⼀部分第⼀步 :这是我的导出数据的脚本call.sqlconn scott/tigerset echo offset term offset line 1000 pages 0set feedback offset heading offset trimspool onspool /temp/test/ldr_test.csvselect a.empno||',"'||a.ename||'",'||to_char(a.hiredate,'yyyy-mm-dd hh24:mi:ss')||','||a.sal from test a;spool offset trimspool offset heading onset feedback onset term onset echo onexit注释:call.sql脚本执⾏⽅法 (1)sqlplus /nolog 先进⼊sqlplus命令模式(2)start call.sql 在sqlplus命令模式下执⾏第⼆步 :导⼊数据的脚本add_test.ctlLOAD DATAINFILE ldr_test.csvTRUNCATE INTO TABLE testFIELDS TERMINATED BY"," OPTIONALLY ENCLOSED BY'"'(EMPNO,ENAME,HIREDATE date 'yyyy-mm-dd hh24:mi:ss',SAL)注释: 在第⼀步导出数据后,执⾏add_test.sql脚本命令为: sqlplus scott/tiger control=add_test.ctl⾄此⽤sqlplus导⼊/出数据完成了,如果有些参数不明⽩,请看⼀下第⼆三部分。

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中,可以使用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加载数据之前,应该先创建目标表,确保表的结构与控制文件中描述的一致。

ORACLEsqlldrctl导入数据

ORACLEsqlldrctl导入数据oracle ctl 文本数据导出导入实现(环境 oracle 9I 9.0.2) bat 部分(通用部分)cd Y:\1sqlplus mobilenew@oral/password @Y:\1\6.sqlsql 部分 (导出)set time off echo off head off;set heading offset term offset pagesize 0set colsep "," ---对导出数据相关信息列后以逗号分隔set trims onset feedback offset linesize 1200spool Y:\1\辽宁号码.txtselect to_char(d.phonenumber),d.sex,d.age,d.customerstatus,d.bookstatus,to_char(d.begintime,'yyyy-mm-dd hh24:mm:ss'), to_char(d.endtime,'yyyy-mm-dd hh24:mm:ss'),to_char(d.ordertime,'yyyy-mm-dd hh24:mm:ss'),d.timelength,d.callstatus,d.callbusinessidfrom y_customer_info d;spool off/quit/注意以下部分为ctl导入文件写入方法上面写法为sql写法导入部分load datainfile 'E:\C号码导入\textC\辽宁号码.txt'append into table Y_CUSTOMER_INFO_TEMP_LAOLING1 fields terminated by ',' --此处针对逗号分隔符以处理数据. TRAILING NULLCOLS( PHONENUMBER,SEX,AGE ,CUSTOMERSTATUS,BOOKSTATUS ,BEGINTIME,ENDTIME,ORDERTIME ,TIMELENGTH,CALLSTATUS,CALLBUSINESSID)excel 数据导入 oracle 以CVS格式导入示例:test.ctl 写法如下Load datainfile 'd:/1/1.csv'Append into table testfields terminated by ','(d,a)批处理bat写法sqlldr userid=mobilenew/password@orcl control='d:\1\t est.ctl' log=d:\1\log.txt bad=d:\1\bad.txtcsv 文件导入时 ,表类型为date类型导入列子---表结构create TABLE FJPHONE(ITEMNAME VARCHAR2(50) NOT NULL,PHONENUMBER VARCHAR2(20)NOT NULL,CITY VARCHAR2(10) default ' ',AREA varchar2(10) default ' ',BRAND VARCHAR2(20) default ' ',JOBID VARCHAR2(20) default ' ',CALLSTATS VARCHAR2(20) default ' ' ,TIMELENGTH VARCHAR2(20) default ' ',ORDERTIME date default sysdate //时间列)ctl 文件写法如下:load datainfile 'E:\4\副本Xl0000047.csv'append into table fjphonefields terminated by ','TRAILING NULLCOLS(ITEMNAME,PHONENUMBER,CITY,AREA,BRAND,JOBID,CALL STATS,TIMELENGTH,ORDERTIME"to_date(:ordertime,'''yyyy-mm-dd''')")/*在所需导入到列后加入"to_date(:ordertime,'''yyyy-mm-dd''')" */。

如何使用SQLloader导入数据

如何使用SQLloader导入数据SQL_loader批量上传数据1.注释在工作中,很多时候会遇到如下情况:需要将excel中的数据批量上传到ORACLE 表中。

如果是小数据量,如几十条至几百条,那么用plsql dev工具,在查询命令后加上for update 然后解锁,把数据复制粘贴进去就可以了。

但如果遇到大数据量几万至几十万时,上述方法就不可行了。

如下介绍如何使用oracle自带的sqlloader上传数据。

2.SQL_LOADER上传数据2.1sql_loader说明sql*loader是oracle自带程序。

需要上传数据的本机只要安装了oracle数据库或客户端就会自动集成该工具。

但是不同的版本对控制文件的写法要求有所不同。

具体可参见2.3节或者附件控制文件的内容。

2.2编辑数据文件要使用sql*loader,其数据文件必须是两种,一种是*.txt 的文本文件,另一种是*.csv的文件。

例如,需要上传的数据是使用excel编辑的,那么只需要将excel另存为[制表符分割的txt 文件]或者另存为[逗号分割的csv 文件]即可。

上图是将excel文件另存为“文本文件(制表符分割)(*.txt)”文件格式后的效果要将excel文件转换成csv格式同上面一样,另存为“CSV(逗号分割)(*.csv)”格式即可。

如下图:注意:CSV格式的文件打开后跟excel的样式差不多,但实际存储方式不一样。

在磁盘上CSV格式的文件中每个格子中的数据使用逗号分割开存储的。

这样的存储方式很有用,方面后面写控制文件。

控制文件在控制读取数据的时候直接以逗号为标记读取数据。

其实,plsql dev在导出文件的时候就可选择存储为csv格式。

按照以上方法,数据文件就准备好了。

2.3编写控制文件控制文件其实就是SQL_LOADER上传数据时需要运行的脚本,其后缀名为ctl。

控制文件写明了数据文件的位置、加载数据的方式、加载到哪个表、如何读取数据等信息。

Oracle数据库管理员教程--SQLLoader

Oracle 数据库管理员教程
SQL*DBA
SQL*Loader
Export & Import
1
第 九 章
SQL*Loader
SQL*Loader
SQL*Loader把外部文件中的数据装载 到ORACLE数据库中。功能如下:
• 支持多种数据类型(日期型、二进制型等)。
• 同时装载多张表的数据,将选择的行插入各表中。
• 组合多个物理记录为一个逻辑记录。
• 加工一个物理记录为多个逻辑记录。
• 从磁盘或磁带安装数据。
• 提供详细的错误报告。
SQL*Loader
SQL*Loader使用的各种文件:
• 控制文件(.CTL) • 数据文件(.DAT) • 日志文件(.LOG) • 坏文件(.BAD) • 丢掉文件(.DSC)
SQL*Loader
日志文件存储装载数据过程中的所有
信息。
• 标题信息:运行日期、软件版本号等。 • 全局信息:输入/输出文件名、命令行变量回 应、继续字符说明等。 • 表信息:表名、装载条件、装载方式、列信息 等。 • 数据文件信息:记录有错误的数据。 • 表装载信息:装载行数、错误数据行数等。 • 统计信息:使用的空间、运行起止时间等。
SQL*Loader
控制文件是用来描述要装载的数据信
息的文件。
包含信息如下:
• 数据文件名 • 数据文件格式 • 文件中的数据字段 • 哪些表和列要装入数据 • 数据的装入方式(覆盖、追加、插入)
SQL*Loader
数据文件存储要装入的数据。
数据文件中数据的格式:
• 固定格式:数据长度相同。 • 自由格式:由分隔符区分不同列的数据。
SQL*Loader
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Oracle数据库导入外部数据如何实现SQL*LOADER不用下载啊oracle装好后,在oracle的bin目录下面就有啊sqlldr.exeSQL*Loader是Oracle数据库导入外部数据的一个工具.它和DB2的Load工具相似,但有更多的选择,它支持变化的加载模式,可选的加载及多表加载.如何使用 SQL*Loader 工具我们可以用Oracle的sqlldr工具来导入数据。

例如:sqlldr scott/tiger control=loader.ctl控制文件(loader.ctl) 将加载一个外部数据文件(含分隔符). loader.ctl如下:load datainfile 'c:\data\mydata.csv'into table empfields terminated by "," optionally enclosed by '"'( empno, empname, sal, deptno )mydata.csv 如下:10001,"Scott Tiger", 1000, 4010002,"Frank Naude", 500, 20下面是一个指定记录长度的示例控制文件。

"*" 代表数据文件与此文件同名,即在后面使用BEGINDATA段来标识数据。

load datainfile *replaceinto table departments( dept position (02:05) char(4),deptname position (08:27) char(20))begindataCOSC COMPUTER SCIENCEENGL ENGLISH LITERATUREMATH MATHEMATICSPOLY POLITICAL SCIENCEUnloader这样的工具Oracle 没有提供将数据导出到一个文件的工具。

但是,我们可以用SQL*Plus的select 及 format 数据来输出到一个文件:set echo off newpage 0 space 0 pagesize 0 feed off head off trimspool on spool oradata.txtselect col1 || ',' || col2 || ',' || col3from tab1where col2 = 'XYZ';spool off另外,也可以使用使用 UTL_FILE PL/SQL 包处理:rem Remember to update initSID.ora, utl_file_dir='c:\oradata' parameter declarefp utl_file.file_type;fp := utl_file.fopen('c:\oradata','tab1.txt','w');utl_file.putf(fp, '%s, %s\n', 'TextField', 55);utl_file.fclose(fp);end;当然你也可以使用第三方工具,如SQLWays ,TOAD for Quest等。

加载可变长度或指定长度的记录如:LOAD DATAINFILE *INTO TABLE load_delimited_dataFIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'TRAILING NULLCOLS( data1,data2)BEGINDATA11111,AAAAAAAAAA22222,"A,B,C,D,"下面是导入固定位置(固定长度)数据示例:LOAD DATAINFILE *INTO TABLE load_positional_data( data1 POSITION(1:5),data2 POSITION(6:15))BEGINDATA11111AAAAAAAAAA22222BBBBBBBBBB跳过数据行:可以用 "SKIP n" 关键字来指定导入时可以跳过多少行数据。

如:LOAD DATAINFILE *INTO TABLE load_positional_dataSKIP 5( data1 POSITION(1:5),data2 POSITION(6:15))BEGINDATA11111AAAAAAAAAA22222BBBBBBBBBB导入数据时修改数据:在导入数据到数据库时,可以修改数据。

注意,这仅适合于常规导入,并不适合 direct导入方式.如:INFILE *INTO TABLE modified_data( rec_no "my_db_sequence.nextval",region CONSTANT '31',time_loaded "to_char(SYSDATE, 'HH24:MI')",data1 POSITION(1:5) ":data1/100",data2 POSITION(6:15) "upper(:data2)",data3 POSITION(16:22)"to_date(:data3, 'YYMMDD')")BEGINDATA11111AAAAAAAAAA99120122222BBBBBBBBBB990112LOAD DATAINFILE 'mail_orders.txt'BADFILE 'bad_orders.txt'APPENDINTO TABLE mailing_listFIELDS TERMINATED BY ","( addr,city,state,zipcode,mailing_addr "decode(:mailing_addr, null, :addr, :mailing_addr)", mailing_city "decode(:mailing_city, null, :city, :mailing_city)", mailing_state)如:LOAD DATAINFILE *REPLACEINTO TABLE empWHEN empno != ' '( empno POSITION(1:4) INTEGER EXTERNAL,ename POSITION(6:15) CHAR,deptno POSITION(17:18) CHAR,mgr POSITION(20:23) INTEGER EXTERNAL)INTO TABLE projWHEN projno != ' '( projno POSITION(25:27) INTEGER EXTERNAL,empno POSITION(1:4) INTEGER EXTERNAL)导入选定的记录:如下例: (01) 代表第一个字符, (30:37) 代表30到37之间的字符:LOAD DATAINFILE 'mydata.dat' BADFILE 'mydata.bad' DISCARDFILE 'mydata.dis'APPENDINTO TABLE my_selective_tableWHEN (01) <> 'H' and (01) <> 'T' and (30:37) = '19991217'(region CONSTANT '31',service_key POSITION(01:11) INTEGER EXTERNAL,call_b_no POSITION(12:29) CHAR)导入时跳过某些字段:可用 POSTION(x:y) 来分隔数据. 在Oracle8i中可以通过指定 FILLER 字段实现。

FILLER 字段用来跳过、忽略导入数据文件中的字段.如:LOAD DATATRUNCATE INTO TABLE T1FIELDS TERMINATED BY ','( field1,field2 FILLER,field3)导入多行记录:可以使用下面两个选项之一来实现将多行数据导入为一个记录:CONCATENATE: - use when SQL*Loader should combine the same number of physical records together to form one logical record.CONTINUEIF - use if a condition indicates that multiple records should be treated as one. Eg. by having a '#' character in column 1.SQL*Loader 数据的提交:一般情况下是在导入数据文件数据后提交的。

也可以通过指定 ROWS= 参数来指定每次提交记录数。

提高 SQL*Loader 的性能:1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。

如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。

2) 可以添加 DIRECT=TRUE来提高导入数据的性能。

当然,在很多情况下,不能使用此参数。

3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。

这个选项只能和 direct 一起使用。

4) 可以同时运行多个导入任务.常规导入与direct导入方式的区别:常规导入可以通过使用 INSERT语句来导入数据。

Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。

导入数据时修改数据:在导入数据到数据库时,可以修改数据。

注意,这仅适合于常规导入,并不适合 direct导入方式.如:LOAD DATAINFILE *INTO TABLE modified_data( rec_no "my_db_sequence.nextval",region CONSTANT '31',time_loaded "to_char(SYSDATE, 'HH24:MI')",data1 POSITION(1:5) ":data1/100",data2 POSITION(6:15) "upper(:data2)",data3 POSITION(16:22)"to_date(:data3, 'YYMMDD')")BEGINDATA11111AAAAAAAAAA99120122222BBBBBBBBBB990112LOAD DATAINFILE 'mail_orders.txt'BADFILE 'bad_orders.txt'APPENDINTO TABLE mailing_listFIELDS TERMINATED BY ","( addr,city,state,zipcode,mailing_addr "decode(:mailing_addr, null, :addr, :mailing_addr)", mailing_city "decode(:mailing_city, null, :city, :mailing_city)", mailing_state)sqlldr使用例子说明先把Excel另存为.csv格式文件,如test.csv,再编写一个insert.ctl用sqlldr进行导入!insert.ctl内容如下:load data --1、控制文件标识infile 'test.csv' --2、要输入的数据文件名为test.csv append into table table_name --3、向表table_name中追加记录fields terminated by ',' --4、字段终止于',',是一个逗号(field1,field2,field3,...fieldn)-----定义列对应顺序注意括号中field排列顺序要与csv文件中相对应然后就可以执行如下命令:sqlldr user/password control=insert.ctl。

相关文档
最新文档