CTL文件用法
1.控制根据数据不同插入不同的表(条件装载);
2.FIELDS TERMINATED BY x’09′ (制表符)whitespace(空格)等不同的数据分隔符号
3.装载定长数据;
4.装载变长数据;
5.装载嵌套数据;
6.在sqlldr中使用函数
7.如何装载日期类型纪录
8.装载分区表;
9.TRAILING NULLCOLS
10.使用filler 跳过 在导入数据文本中不想进行导入的列
11.
12.控制根据数据不同插入不同的表
13.包括文件:日志文件;控制文件;坏记录文件;废弃记录文件(when)
14.控制文件:
15.load data
16.1说明输入文件 infile后根文件名.默认扩展名为’.dat’
17.infile=’accounts’
18.用单引号’ 括起文件名accounts.dat
19.2处理选项discardfile badfile
20.load data
21.infile ‘accounts’
22.3目标对象—–表
23.slqloader的用户必要有insert的权限.into table 开头
24.into table account_trans
25.when day between ‘01′ and ‘31′
26.into table account_nbr
27.when account_type between ‘aa’ and ‘zz’ 这样可以根据条件插入不同的表
28.4目标对象—-分区表或者某个分区
29.into table sale partition(east_data)…..
truncate可以加条件吗30.如果一次装在所有分区,可以用目标对象—-表的方法进行处理 into table sale….
31.5记录生成模式—Insert,Replace,Append
32.Insert–缺省模式,装在之前,table必须为空表;;
33.Replace –先删除所有记录,然后装在满足when条件的行;(需要delete的权限)
34.Append–表中原有记录保存,加入新的行.;;
处理定长记录
load data
infile ‘account.dat’
into table count_trans append
when year=’1990′
(account_nbr position(01:10) character,
day position(11:12) character,
month position(13:14) character,
transaction_code position(15:16) character,
credit_amount position(17:30) character)
into table count replace
when year>’1990′
(account_nbr position(01:10) character,
day position(11:12) character,
month position(13:14) character,
transaction_code position(15:16) character,
credit_amount position(17:30) character)
处理变长记录(从access到oracle)
分隔符:概念.在一行中将一项信息与另一项信息分离开的一个字符标记.
load data
infile ‘customer.dat’
into table aa append
(customer_id char terminated by ‘ ‘,
status char terminated by ‘ ‘,
dsc_class char enclosed by ‘ ‘,
source char terminated by whitespace)
1>单引号分割.末尾的信息项不已逗号结束,用关键字whitespace
FIELDS TERMINATED BY x’09′ (制表符)
LOAD DATA
INFILE *
INTO TABLE DEPT1
REPLACE
FIELDS TERMINATED BY X’09′
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10 Sales Virginia
by x’09′遇见一个制表符.它将输出一个直 也就是在制表符之间的数据
SVRMGR> host sqlldr scott/scott control=
SQL*Loader: Release 8.1.7.0.0 - Production on 星期六 8月 24 21:04:26 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
达到提交点,逻辑记录计数1
SVRMGR> select *from dept1;
DEPTNO DNAME LOC
———- ————– ————-
10 Sales
已选择 1 行。
使用filler 跳过 在导入数据文本中不想进行导入的列
demo
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ‘,’
(DEPTNO,
DNAME “upper(:dname)”,
LOC “upper(:loc)”,
LAST_UPDATED date ‘dd/mm/yyyy’
)
BEGINDATA
10,Sales,Virginia,1/5/2000
20,Accounting,Virginia,21/6/1999
30,Consulting,Virginia,5/1/2000
40,Finance,Virginia,15/3/2001
u can see upper functions
sqlldr is a tool that can parse input variables and form. its insert sql using bind values.
like normal controlfile
FIELDS TERMINATED BY ‘,’
(DEPTNO,
DNAME ,
LOC ,
LAST_UPDATED date
)
oracle’s sqlldr change it equal insert into table values(:deptno,:dname,:loc,:last_updated);
when load data sqlldr parse each record row and bind variables
once parse else execute!
so like
(DEPTNO,
DNAME “upper(:dname)”,
LOC “upper(:loc)”,
LAST_UPDATED date ‘dd/mm/yyyy’
)
sql : insert into table values(:deptno,upper(name),upper(:loc),:last_updated )
the ” LAST_UPDATED date ‘dd/mm/yyyy’ ” inside date ‘dd/mm/yyyy’ is only the variable ’s datatype not functions
u can aslo use function to_date() then it deference
SVRMGR> host sqlldr scott/scott
SQL*Loader: Release 8.1.7.0.0 - Production on 星期日 8月 25 00:46:04 2002
(c) Copyright 2000 Oracle Corporation. All rights reserved.
达到提交点,逻辑记录计数4
SVRMGR> select *from dept1;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。