ITPub博客

首页 > 数据库 > Oracle > ORACLE 的加载工具SQLLDR应用

ORACLE 的加载工具SQLLDR应用

原创 Oracle 作者:itpub120 时间:2007-01-23 17:07:29 0 删除 编辑

SQLLDR包括三个文件:控制文件,数据文件,日志文件;

日志文件包括三种:错误日志文件(*.bad),丢弃日志文件(*.dsc);常规日志文件(*.log)

[@more@]

创建一个表;

create table TEST
(
BM NUMBER(8),
BMMC VARCHAR2(20),
SJBM NUMBER(8)
);

数据文件mmr.txt:

13213,aaa,333

12345,bbb,555

12345,ddd,888

创建一个批处理文件do.bat

sqlldr msno/msno@211 control=do.ctl log=D:loaddatalog22.txt;


方法一:在控制文件中直接加载数据;

创建控制文件loaddata.ctl

Load data

infile *

replace into table test

fields terminated by ','

optionally enclosed by ‘’’’

trailing nullcols

(bm ,bmmc ,sjbm )

begindata

13213,aaa,333

12345,bbb,”555”

12345,ddd,888

执行do.bat文件,就可以了加载成功了;optionally enclosed by ‘”’可以去除”555”的双引号;trailing nullcols指没有的数据用NULL填充;


方法二:通过数据文件加载;

创建控制文件loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

fields terminated by ','

(bm ,bmmc,sjbm )

执行do.bat就可以完成加载;


方法三:将一个数据文件同时加载到多个数据表中;

创建控制文件loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

into table testmmr

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

执行do.bat就可以完成加载;为了装载固定的定位数据,这里必须使用position关键字;不能用关键子terminated,不然不能成功; position(*+1:9)是相对位置,等于position(5+1:9),相对于上一列的结束位置加一,同时注意;position关键字的结束位置必须是该数据结束的绝对列位置;


方法四:有选择条件的多表导入:

创建控制文件loaddata.ctl

Load data

infile 'd:loaddatammr.txt'

replace into table test

when bm = '13213'

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)

when bm =’12345’

into table testmmr

(

bm position(1:5),

bmmc position(*+1:9),

sjbm position(*+1:13)

)


控制文件中的关键字replace,insert,append分别代表替换原数据,插入新数据;增加新数据;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/8109090/viewspace-892815/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORACLE 测试题:
请登录后发表评论 登录
全部评论
  • 博文量
    60
  • 访问量
    600445