sqlload基本使用方法

合集下载

SQLload

SQLload

SQLloadsqlload是oracle提供的批量导⼊⽂件数据的⼯具1、在导⼊先,先根据数据建表。

2、执⾏sqlldr命令sqlldr userid=username/password control =*.tl --要在ctl⽂件的⽬录下执⾏3、编写ctl⽂件for example:load datainfile 'F:\STUDY\6.1\CELLPORT_20161124143843_exp_1.csv' --加载的⽂件infile 'F:\STUDY\6.1\CELLPORT_20161124143843_exp_2.csv' --加载的⽂件into table cellport --⽬标表when port_status='空闲' --可以设置条件筛选数据FIELDS TERMINATED BY ',' --设置分隔符,这⾥分隔符⽯,OPTIONALLY ENCLOSED BY '"' --设置结束符,也可以不设置,除⾮数据很⼯整,否则最好设置TRAILING NULLCOLS --设置空数据也,加载。

( --下⾯是表的字段,对每个字段还可以使⽤sql函数,进⾏⼀些计算或者格式转换等等,city,house_name "upper(:house_name)", --使⽤函数houes_type,house_jd,houese_wd,eq_name,eq_range,eq_location,eq_fgb,eq_port,port_status,port_type,OLT,OLT_PON ,NUMBER_209 , --DL_TIMESTAMP date 'yyyy-mm-dd hh24:mi:ss' --时间转换)1.什么是*.csv,如何得到?⾥⾯存放的是数据表.每⾏代表数据库表格的⼀⾏,每⾏中,每两个数据中间由逗号","分割.*.csv可以通过"将excel⽂件另存为*.csv"得到.2.如何将*.csv格式的数据导⼊oracle数据库?举例来说:test.csv⽂件中存放以下数据.a1,b1a2,b2存放路径为:d:\test.csv准备将其存放到oracle数据库中.a.⾸先,则需要新建表(栏位数量和类型要和需要导⼊的⼀致)create table test(A char,B char);b.新建test.ctl⽂件⽤记事本编辑写⼊:load datainfile ‘d:\test.csv’into table “test”fields terminated by ‘,’(A,B)c.打开cmd命令⾏界⾯输⼊:sqlldr control=d:\test.ctl log=d:\test.log回车:为账号和密码以及数据库名称.以上的介绍⽐较简单.⾥⾯的介绍⽐较详细,我转到这⾥:在 Oracle 数据库中,我们通常在不同数据库的表间记录进⾏复制或迁移时会⽤以下⼏种⽅法:1. A 表的记录导出为⼀条条分号隔开的 insert 语句,然后执⾏插⼊到 B 表中2. 建⽴数据库间的 dblink,然后⽤ create table B as select * from where ...,或 insert into B select * from where ...3. exp A 表,再 imp 到 B 表,exp 时可加查询条件4. 程序实现 select from A ..,然后 insert into B ...,也要分批提交5. 再就是本篇要说到的 Sql Loader(sqlldr) 来导⼊数据,效果⽐起逐条 insert 来很明显第 1 种⽅法在记录多时是个噩梦,需三五百条的分批提交,否则客户端会死掉,⽽且导⼊过程很慢。

使用SQLLoad导入excel

使用SQLLoad导入excel

使用SQLLoad导入excel使用SQL*load将excel文件导入oracle数据库使用这种方法导入excel内容到oracle时,首先需要将excel文件另存为文本格式,文件类型选文本类型或者csv类型即将e:\test.xls 另存为e:\test.csv。

如果oracle没有对应存储数据的表结构,则需要创建表test(id,name,telphone)。

用记事本创建sql*loader控制文件test.ctl(ctl后缀是企图证明这是一个控制文件,但实际上这个文件后缀不重要,用户可以自由选择,但文件格式一定要是文本格式),内容如下:Load dataInfile ‘e:\test.csv’--数据源文件名称Append|insert|replace --append在表后追加,insert插入空表,replace替代原有内容Into table test --要导入的数据库表名称[when id = id_memo] --过滤条件Fields terminated by X’09’ --字段分隔符(id,name,telphone) --字段名称列表最后在命令窗口输入sqlldr命令行执行导入操作Sqlldr userid = system/managercontrol=’e:\test.ctl’Sqlldr的函数关键字说明:Userid --oracle用户名 userid = username/passwordControl --控制文件名称control = ‘e:\insert.ctl’Log –-日志文件名称log = ‘e:\insert.log’Bad --损坏文件名称Data --data file nameDiscard --discard file nameDiscardmax --number of discards to allow(默认全部)Skip --导入时跳过的记录行数(默认0)Load --导入时导入的记录行数(默认全部)Errors --允许错误的记录行数(默认50)。

Oracle数据库SqlLoad常用技巧总结

Oracle数据库SqlLoad常用技巧总结

Oracle数据库SqlLoad常用技巧总结Oracle数据库SqlLoad常用技巧的相关知识是本文我们主要要介绍的内容,本文我们总结了14种SqlLoad的使用技巧,并给出了测试用的文件源码,接下来我们就开始一一介绍这部分内容,希望能够对您有所帮助。

1、控制文件中注释用“--”。

2、为防止导入出现中文乱码,在控制文件中加入字符集控制1.LOAD DATA2.CHARACTERSET ZHS16GBK3、让某一列成为行号,用RECNUM关键字1.load data2.infile *3.into table t4.replace5.( seqno RECNUM //载入每行的行号6.text Position(1:1024))7.BEGINDATA8.fsdfasj4、过滤某一列,用FILLER关键字1.LOAD DATA2.TRUNCATE INTO TABLE T13.FIELDS TERMINATED BY ','4.( field1,5.field2 FILLER,6.field37.)5、过滤行在INTO TABLE table_name后加WHEN过滤条件,但功能有限,如果以竖线分隔符的文件,不能实现字段级的过滤,定长的还好。

1.LOAD DATA2.INFILE 'mydata.dat'3.BADFILE 'mydata.bad'4.DISCARDFILE 'mydata.dis'5.APPEND6.INTO TABLE my_selective_table7.WHEN (01) <> 'H' and (01) <> 'T' and (30:37) = '200312 17'8.(9.region CONSTANT '31',10.service_key POSITION(01:11) INTEGER EXTE RNAL,11.call_b_no POSITION(12:29) CHAR12.)6、过滤首行,用OPTIONS (SKIP 1)选项,也可以写在命令行中,如:sqlldr sms/admin control=test.ctl skip=17、TRAILING NULLCOLS的使用,作用是表的字段没有对应的值时允许为空如:1.LOAD DATA2.INFILE *3.INTO TABLE DEPT4.REPLACE5.FIELDS TERMINATED BY ','6.TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应的列的值的如果第一行改为 10,Sales,Virginia,1/5/2000,, 就不用TRAILING NULLCOLS了7.(DEPTNO,8.DNAME "upper(:dname)", // 使用函数9.LOC "upper(:loc)",ST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式还有'dd-mon-yyyy' 等11.ENTIRE_LINE ":deptno||:dname||:loc||:last_updated "12.)13.BEGINDATA14.10,Sales,Virginia,1/5/200015.20,Accounting,Virginia,21/6/199916.30,Consulting,Virginia,5/1/200017.40,Finance,Virginia,15/3/20018、添加、修改数据(1)、1.LOAD DATA2.INFILE *3.INTO TABLE tmp_test4.( rec_no "my_db_sequence.nextval",5.region CONSTANT '31',6.time_loaded "to_char(SYSDATE, 'HH24:MI')",7.data1 POSITION(1:5) ":data1/100",8.data2 POSITION(6:15) "upper(:data2)",9.data3 POSITION(16:22)"to_date(:data3, 'YYMMDD')"10.)11.BEGINDATA12.11111AAAAAAAAAA99120113.22222BBBBBBBBBB990112(2)、1.LOAD DATA2.INFILE 'mail_orders.txt'3.BADFILE 'bad_orders.txt'4.APPEND5.INTO TABLE mailing_list6.FIELDS TERMINATED BY ","7.( addr,8.city,9.state,10.zipcode,11.mailing_addr "decode(:mailing_addr, null, :addr, : mailing_addr)",12.mailing_city "decode(:mailing_city, null, :city, :mai ling_city)",13.mailing_state14.)9、合并多行记录为一行记录通过关键字concatenate 把几行的记录看成一行记录:1.LOAD DATA2.INFILE *3.concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录4.INTO TABLE DEPT5.replace6.FIELDS TERMINATED BY ','7.(DEPTNO,8.DNAME "upper(:dname)",9.LOC "upper(:loc)",ST_UPDATED date 'dd/mm/yyyy'11.)12.BEGINDATA13.10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/200014.Virginia,15.1/5/200010、用”|+|”分隔符,避免数据混淆:fields terminated by "|+|"11、如果数据文件包含在控制文件中,用INFILE *如下:1.LOAD DATA2.INFILE *3.append4.INTO TABLE tmp_test5.FIELDS TERMINATED BY ","6.OPTIONALLY ENCLOSED BY '"'7.TRAILING NULLCOLS8.( data1,9.data210.)11.BEGINDATA12.11111,AAAAAAAAAA13.22222,"A,B,C,D,"12、一次导入多个文件到同一个表1.LOAD DATA2.INFILE file1.dat3.INFILE file2.dat4.INFILE file3.dat5.APPEND6.INTO TABLE emp7.( empno POSITION(1:4) INTEGER EXTERNAL,8.ename POSITION(6:15) CHAR,9.deptno POSITION(17:18) CHAR,10.mgr POSITION(20:23) INTEGER EXTERNAL11.)13、将一个文件导入到不同的表(1)、1.LOAD DATA2.INFILE *3.INTO TABLE tab1 WHEN tab = 'tab1'4.( tab FILLER CHAR(4),5.col1 INTEGER6.)7.INTO TABLE tab2 WHEN tab = 'tab2'8.( tab FILLER POSITION(1:4),9.col1 INTEGER10.)11.BEGINDATA12.tab1|113.tab1|214.tab2|215.tab3|316.==============(2)、1.LOAD DATA2.INFILE 'mydata.dat'3.REPLACE4.INTO TABLE emp5.WHEN empno != ' '6.( empno POSITION(1:4) INTEGER EXTERNAL,7.ename POSITION(6:15) CHAR,8.deptno POSITION(17:18) CHAR,9.mgr POSITION(20:23) INTEGER EXTERNAL10.)11.INTO TABLE proj12.WHEN projno != ' '13.( projno POSITION(25:27) INTEGER EXTERNAL,14.empno POSITION(1:4) INTEGER EXTERNAL15.)14、过滤掉的数据文件路径指定1./opt/app/oracle/product/10.2.0/bin/sqlldr APS/APS cont rol=/home/oracle/APS_LOAD/ctl/AP_CONTRACT.CTL LOG=/ho me/oracle/APS_LOAD/log/$yesterday/AP_CONTRACT_$yesterda y.log bad=/home/oracle/APS_LOAD/bad/DUE_BILL_$yesterday.b ad rows=10000readsize=20000000bindsize=20000000DISCA RD=/home/oracle/APS_LOAD/bad/discard_ts.dis15、附:测试用控制文件1.LOAD DATA2.INFILE '/home/oracle/APS_LOAD/dat/APS_AP_CONTRAC T.dat'3.TRUNCATE4.INTO TABLE AP_CONTRACT5.WHEN (01)<>'1'6.FIELDS TERMINATED BY "|"7.TRAILING NULLCOLS8.(9.AGMT_NO "(TRIM(:AGMT_NO ))",10.CONTRACT_NO FILLER, -- "(TRIM(:CONTRACT_NO ))",11.LOAN_AMT "(TRIM(:LOAN_AMT ))",12.AGMT_HOLDER "(TRIM(:AGMT_HOLDER ))",13.LOAN_TYPE_CD "(TRIM(:LOAN_TYPE_CD ))",14.CURR_CD "(TRIM(:CURR_CD ))" ,15.BALANCE "(TRIM(:BALANCE ))" ,16.LOAN_DIRC_CD "(TRIM(:LOAN_DIRC_CD ))",17.AGMT_START_DATE "(TRIM(:AGMT_START_D ATE ))",18.AGMT_END_DATE "(TRIM(:AGMT_END_DATE ))",19.AGMT_BELONG_ORG_NO "(TRIM(:AGMT_BEL ONG_ORG_NO ))",20.MANAGER_NO "(TRIM(:MANAGER_NO ))",21.PROCESS_RATE "(TRIM(:PROCESS_RATE ))",22.INSURE_METH_TYPE_CD "(TRIM(:INSURE_MET H_TYPE_CD ))",23.AGMT_SIGN_DATE "(TRIM(:AGMT_SIGN_DA TE ))",24.LOAN_PROP_CD "(TRIM(:LOAN_PROP_CD ))",25.LOAN_USE_TYPE "(TRIM(:LOAN_USE_TYPE ))",26.ENTRUST_LOAN_FLAG "(TRIM(:ENTRUST_LOA N_FLAG ))",27.ENTRUST_NAME "(TRIM(:ENTRUST_NAME ))",28.FARM_LOAN_FLAG "(TRIM(:FARM_LOAN_FL AG ))",29.FARM_LOAN_TYPE_CD "(TRIM(:FARM_LOAN_ TYPE_CD ))",30.LOAN_BIZ_TYPE_CD "(TRIM(:LOAN_BIZ_TYPE _CD ))",31.ID_TEST RECNUM ,32.CHAR_TEST CONSTANT '31',33.SQ "sqlldr.nextval",34.TEST_4 "TO_CHAR(SYSDATE,'YYYYMM DD HH24:MI:SS')",35.TEST_5 "(TRIM(:LOAN_BIZ_TYPE_CD)||' ---'||TRIM(:AGMT_NO))"36.)关于Oracle数据库SqlLoad常用技巧的相关知识就介绍到这里了,希望本次的介绍能够对您有所收获!。

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

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同⼀个⽬录...⽇志主要⽤来看异常信息和导⼊的信息.
原创⽂章,转载注明出处.。

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)。

朋友打电话问我如何利用sql讲mysl导出的文本数据加载到oracle数据库,电话说了他也没听清楚,我做了如下实验,给他做例子:一、加载txt文本1.在D盘建立sqlldr的控制文件,111.ctl 内容如下LOAD DATAINFILE 'd:\111.txt'INTO TABLE SALGRADE_TESTTRUNCATEFIELDS TERMINATED BY ','(GRADE,LOSAL,HISAL)2.在D盘建立sqlldr的数据文件111.txt,内容如下格式1,700,12002,1201,14003,1401,20004,2001,30005,3001,99993.在CMD的命令行模式执行加载操作sqlldr scott/tiger control=d:\111.ctl log=d:\111.log bad=d:\111.baSQL*Loader: Release 11.2.0.1.0 - Production on 星期三 9月 14 10:58:35 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved达到提交点 - 逻辑记录计数 4达到提交点 - 逻辑记录计数 54.登录数据库验证加载结果D:\window\server\mysql-5.1.51\bin>sqlplus scott/tiger连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select * from SALGRADE_TEST;GRADE LOSAL HISAL---------- ---------- ----------1 700 12002 1201 14003 1401 20004 2001 30005 3001 99995.导入成功之后,查看111.log6.注释LOAD DATA 控制文件标识INFILE 'd:\111.txt'为数据文件地址和名称,此处如果是INFILE *表示要加载的数据就在这个控制文件里,也就是BEGINDATA后面跟的内容。

详见7INTO TABLE SALGRADE_TEST要往SALGRADE_TEST表里加载数据TRUNCATE如果表里有数据,先truncate表,然后再加载,TRUNCATE还可换成其他值,比如insert,为缺省方式,在数据装载开始时要求表为空,如果表中有数据,会报错而终止。

SQL*Loader-601: 对于 INSERT 选项, 表必须为空。

表 SALGRADE_TEST 上出错append,在表中追加新记录,如果。

表上有主键和唯一性约束,新加载的数据的相关字段值不能重复replace,删除旧记录,替换成新装载的记录,要求有delete权限truncate,同上,要求有truncate权限FIELDS TERMINATED BY ',' 数据以逗号分隔,如果是TERMINATED BY WRITESPACE表示以空白分隔,如果不指定FIELDS TERMINATED BY ',',需要为每一列都指定分隔符,如下:(GRADE[interger external] TERMINATED BY ',',LOSAL [interger external] TERMINATED BY ',',HISAL [interger external] TERMINATED BY ',')例如:LOAD DATAINFILE 'd:\111.txt'TRUNCATEINTO TABLE SALGRADE_TEST(GRADE TERMINATED BY ',',LOSAL TERMINATED BY ',',HISAL TERMINATED BY ',')(GRADE,LOSAL,HISAL) 要加载到表中的这些字段,字段顺序需要和数据文件111.txt内的数据对应,如果单独为每一列都指定了分隔符,此部分就不需要了。

7.如果数据量不大,可以讲sqlload的数据文件(111.txt)集成到sqlload的控制文件(111.ctl)内,例如:LOAD DATAINFILE *TRUNCATEINTO TABLE SALGRADE_TESTFIELDS TERMINATED BY ','(GRADE,LOSAL,HISAL)BEGINDATA1,700,12002,1201,14003,1401,20004,2001,30005,3001,9999加载D:\>sqlldr scott/tiger control=d:\111.ctlSQL*Loader: Release 11.2.0.1.0 - Production on 星期三 9月 14 17:03:53 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 达到提交点 - 逻辑记录计数 4达到提交点 - 逻辑记录计数 5登录数据库验证加载结果D:\>sqlplus scott/tiger连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> SELECT * FROM SALGRADE_TEST;GRADE LOSAL HISAL---------- ---------- ----------1 700 12002 1201 14003 1401 20004 2001 30005 3001 9999二、加载csv格式的数据1.建立测试表D:\>sqlplus scott/tiger连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> create table dept_test as select * from dept where 1=2;表已创建。

2.建立sqlload的数据文件111.csv,内容如下3.建立sqlload的控制文件111.ctl,内容如下LOAD DATAINFILE 'd:\111.csv'TRUNCATEINTO TABLE DEPT_TESTFIELDS TERMINATED BY ','(DEPTNO,DNAME,LOC)4.执行加载操作D:\>sqlldr scott/tiger control=d:\111.ctl log=d:\111.logSQL*Loader: Release 11.2.0.1.0 - Production on 星期四 9月 15 09:47:44 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 达到提交点 - 逻辑记录计数 45.登录数据库查询D:\>sqlplus scott/tiger连接到:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing options SQL> select * from dept_test;DEPTNO DNAME LOC---------- -------------- -------------10 ACCOUNTING NEW YORK20 RESEARCH DALLAS30 SALES CHICAGO40 OPERATIONS BOSTON三、加载图片到数据库1.创建测试表,由于图片在数据库中以blob的形式保存,这里是有了11g的新特性,securefiles LOB的形式存储图片。

SQL> create table t_load_sf (id number, full_name varchar2(100),2 create_date date, contents blob, constraint pk_t_load_sf primary key(id))3 lob (contents) store as securefile;表已创建。

2.创建sqlload的数据文件111.txt,内容如下:1,DSC00086.JPG2,DSC00122.JPG3,DSC00145.JPG4,DSC00146.JPG5,psu.jpg3.创建sqlload的控制文件111.ctl,内容如下:LOAD DATAINFILE '111.txt'INTO TABLE T_LOAD_SFTRUNCATEFIELDS TERMINATED BY ','(ID CHAR(255),FULL_NAME CHAR(255),CREATE_DATE SYSDATE,CONTENTS LOBFILE(FULL_NAME) TERMINATED BY EOF)4.加载D:\test>sqlldr scott/tiger control=D:\111.ctl log=d:\111.logSQL*Loader: Release 11.2.0.1.0 - Production on 星期四 9月 15 11:29:13 2011 Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved. 达到提交点 - 逻辑记录计数 55.登录数据库验证SQL> select * from t_load_sf where rownum=1;ID FULL_NAME CREATE_DATE CONTENTS-------- --------------- -------------- -----------------------------------1 DSC00086.JPG 15-9月 -11 FFD8FFE1538045786966000049492A00080000000B000E01020020000000920000000F01020005000000B20000001001020008000000B80000001201030001000000010000001A01050001000000C000如果使用plsqldev工具,可以看到加载进数据库的图片。

相关文档
最新文档