sqlldr加载数据的实现代码

sqlldr加载数据的实现代码
下面是使用excel数据的最简单的测试。
1)保存Excel数据作为一个t.txt文件,注意文件后缀为.txt
1 jhchen 11 / 07 / 2005 20:04:00 2005-11-7 20:04
2 jhchen 11 / 07 / 2005 20:04:00 2005-11-7 20:04
3 jhchen 11 / 07 / 2005 20:04:00 2005-11-7 20:04
2)>创建表的SQL t_load(
身份证号码,
名称VARCHAR2(10),
DAT1日期
dat2日期,
dat3日期
);
表的创建。
3)控制文件t.ctl如下
加载数据
't.txt infile
badfile 't.bad
追加到表t_load
场终止于X年
尾nullcols

身份证件,
名称,
DAT1日期毫米 / /年hh24 DD:MI:SS
dat2日期yyyy-mm-dd hh24:MI:SS

在这,X '09'is一个标签,一个Tab键,和一个尾nullcols不得空如果餐桌的领域没有相应的价值。
4)C:文件和设置男生> sqlldr UserID = jhchen / Oracle控制= t.ctl
SQL*Loader:释放9.2.0.6.0生产在11月7日星期一20:20:00 2005
版权(c)1982, 2002,甲骨文公司。版权所有。
到达提交点,逻辑记录计数3
5)SQL SELECT * FROM t_load >;
我的名字dat2 dat3 DAT1
-----------------------------------------------
1 jhchen 07-nov-05 07-nov-05
2 jhchen 07-nov-05 07-nov-05
3 jhchen 07-nov-05 07-nov-05
sqlldr UserID = lgone /老虎控制= a.ctl
加载数据
文件/ 't.dat'file进口
infile / / / Tt。日期/导入多个文件
* / / / /进口文件下面begindata控制文件的内容是后面的重要内容
为表table_name / /指定装载表
badfile'c:坏。txt / /坏文件中指定的地址
以下是4 *************装表方式
在后面追加原始数据表
/ / / /加载插入空表,如果原表的数据sqlloader将停止默认
替换原始表原始数据。
替换指定内容,相同的将用截断语句删除现有数据。
表指定终止*************可以在内部场的开始也可以是表的一部分
字段由','可选地包含' ' '结尾
加载数据:10,
表中的结果是:10LGLG,LG
X年的 / / / /年终止十六十六进制格式
/ / / / writespace加载该数据终止:10 LG LG
尾nullcols *************字段的表不允许空值对应的
下面是在现场*************表

col_1,col_2,col_filler值不该柱填料 / /填料关键词加载
例如:LG,LG,而不是LG LG

当字段以无语句终止时,

col_1 {整数外}终止‘/',
col_2 / {日期终止DD周一YYY ,
{字符}终止 / / col_3由封闭by'lg '选择'。

当字段以无语句终止时,即加载到数据字段的位置

col_1 /位置(1:2),
col_2 /位置(3:10),
/ / col_3位置(* 16), / /这场在一个领域的前端位置的开始
位置 / / col_4(1:16),
col_5 /位置(3:10)焦(8) / /类型指定的字段

begindata / *相应文件开始在控制文件中的内容导入。
10,SQL,什么
20,LG电子,显示
=====================================================================================
请注意,begindata / / / / / / / / / / / /在数值前面不是空间
1小时普通装货
加载数据
*文件
为表
更换
字段由','可选地包含' ' '结尾
(表,
部门名称,
LOC

begindata
10,销售,美国
20,会计,Virginia,美国
30,咨询,Virginia
40,金融,Virginia
50,金融
60,金融
2小时字段终止符空格和田X年终止。
加载数据
*文件
为表
更换
字段终止符空格
场终止于X年
(表,
部门名称,
LOC

begindata
10销售Virginia
在该列加载中没有指定3小时。
加载数据
*文件
为表
更换
字段由','可选地包含' ' '结尾
(表,
filler_1填料,东西不 /加载将不会加载
部门名称,
LOC

begindata
20,有些东西是不能装的,会计,Virginia,美国
4个小时的位置Liezi
加载数据
*文件
为表
更换
(deptno位置(1:2),
名称位置(* 16), / /这场在一个领域的前端位置的开始
LOC位置(*:29),
entire_line位置(1:29)

begindata
10accounting Virginia、美国
尾随nullcols功能使用日期5游戏使用的
加载数据
*文件
为表
更换
字段被终止。
尾nullcols / /其实在begindata数据后entire_line没有直接关系
/ /列的值,如果第一行是10,销售,Virginia,1 / 5 / 2000,尾随,不nullcols
(表,
名称上(部门名称)
LOC上((LOC)
last_updated date'dd / /年毫米, / /日期的表达and'dd-mon-yyyy
entire_line :上| |:名称| |:LOC | |:last_updated

begindata
10,销售,Virginia,1 5 / 2000
20,会计,Virginia,21 / 6 / 1999
30,咨询,Virginia,5 / 1 / 2000
40,金融,Virginia,15 3 / 2001
使用自定义函数/解决方案的6小时内的时间问题
创建或替换
功能my_to_date(p_string在VARCHAR2)返回日期
作为
fmtarray是表字段的类型(25);
l_fmts fmtarray:= fmtarray('dd-mon-yyyy ','dd-month-yyyy,
DD /毫米/年,
DD /毫米 /年hh24:MI:SS);
l_return日期;
开始
我在1…l_fmts.count

开始
l_return:= to_date(p_string,l_fmts(我));
例外
当其他人为空时;
结束;
退出时,l_return不空;
结束循环;
如果(l_return是空的)
然后
l_return:= =
new_time(to_date('01011970 ','ddmmyyyy ')+ 1 / 24 / 60 / 60 *
p_string,'gmt ','est);
最后如果;
返回l_return;
结束;
/
加载数据
*文件
为表
更换
字段被终止。
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updated my_to_date(last_updated) / 使用自定义函数

begindata
10,销售,Virginia,01-april-2001
20,会计,Virginia,13 / 04 / 2001
30,咨询,Virginia,14 / 04 / 2001 12:02:02
40,金融,Virginia,987268297。
50,金融,Virginia,02-apr-2001
60,金融,Virginia,不是日期
在7小时内,多行为一行。
加载数据
*文件
连锁3 /连接到几行通过关键字记录记录
为表
更换
字段被终止。
(表,
上(名称:名称)
LOC上((LOC)
last_updated date'dd / /年的MM

begindata
10,销售,3线为10,销售,Virginia,1 5 / 2000
Virginia,
1 5 2000
这个例子使用continueif列表= / /
告诉sqlldr找到一个逗号在每行末尾附下一行到最后一行
加载数据
*文件
continueif这(1:1)= / /找到每一行的开始是与字符的下一行是一个线连接
比如,10,销售,Virginia,
是10/1 5/2000、销售、Virginia、1 5 2000的行。
/ /这1:1说从第一排在第一的开始和结束的线和continueif下但continueif列表理想
为表
更换
字段被终止。
(表,
上(名称:名称)
LOC上((LOC)
last_updated date'dd / /年的MM

begindata / /但似乎不能作为权利
- 10,销售,Virginia,- 10,销售,Virginia,
1 5 2000 1 5 2000
- 40, 40,金融,Virginia,13 04 / 2001
Virginia金融,13/04/2001
8小时加载每行的行号
加载数据
infile *
为表
更换
(序号recnum / /线数载
文本位置(1:1024))
begindata
fsdfasj / /自动分配一个线号表序号字段加载此行为1
fasdjfasdfl / / 2…
9小时一行数据加载
注意:UNIX和Windows是不同的 / N

使用非换行符
加载数据
*文件
为表
更换
字段被终止。
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updatedmy_to_date(:last_updated)
评论(替换:注释,',CHR(10)) / /替换用于帮助转换换行符

begindata
10,销售,Virginia,01-april-2001,这是销售在Virginia的办公室
20,会计,Virginia,13 04 2001,这是会计在Virginia的办公室
30,咨询,Virginia,14 / 04 / 2001 12:02:02,这是咨询在Virginia的办公室
40,金融,Virginia,987268297,这是金融在Virginia的办公室

使用固定属性
加载数据
infile demo17.dat固定101
为表
更换
字段被终止。
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updatedmy_to_date(:last_updated)
评论

demo17.dat
10,销售,Virginia,01-april-2001,这是销售
在Virginia的办公室
20,会计,Virginia,13 04 2001,这是会计。
在Virginia的办公室
30,咨询,Virginia,14 / 04 / 2001 12:02:02,这是咨询
在Virginia的办公室
40,金融,Virginia,987268297,这就是金融。
在Virginia的办公室
这将是 /换行装载到数据库下面的方法将不需要不同格式的数据
加载数据
infile demo18.dat固定101
为表
更换
字段由','可选地包含' ' '结尾
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updatedmy_to_date(:last_updated)
评论

demo18.dat
10,销售,Virginia,01-april-2001,这是销售
Virginia办事处
20,会计,Virginia,13 04 2001,这是会计
Virginia办事处
30,咨询,Virginia,14 / 04 / 2001 12:02:02,这是咨询
Virginia办事处
40,金融,Virginia,987268297,这是金融
Virginia办事处

使用var属性
加载数据
infile demo19.dat功3
3 告诉每个记录在3个字节之前,记录的长度作为071个记录的第一个记录,说这个记录是71字节。
为表
更换
字段被终止。
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updatedmy_to_date(:last_updated)
评论

demo19.dat
07110,销售,Virginia,01-april-2001,这是销售
在Virginia的办公室
07820,会计,Virginia,13 04 2001,这是会计。
在Virginia的办公室
08730,咨询,Virginia,14 / 04 / 2001 12:02:02,这是咨询
在Virginia的办公室
07140,金融,Virginia,987268297,这就是金融。
在Virginia的办公室

使用STR属性
一 / /新一行结尾最灵活的定义赢得进入:CHR(13)| | CHR(10)
在本专栏的记录最后一| R
选择utl_raw.cast_to_raw(' || | CHR(13)| | chr(10))从双;
结果7c0d0a
加载数据
infile demo20.datSTR X '7c0d0a '
为表
更换
字段被终止。
尾nullcols
(表,
上(名称:名称)
LOC上((LOC)
last_updatedmy_to_date(:last_updated)
评论

demo20.dat
10,销售,Virginia,01-april-2001,这是销售
在Virginia |办公室
20,会计,Virginia,13 04 2001,这是会计。
在Virginia |办公室
30,咨询,Virginia,14 / 04 / 2001 12:02:02,这是咨询
在Virginia |办公室
40,金融,Virginia,987268297,这就是金融。
在Virginia |办公室
==============================================================================
对于这样的数据,使用NULLIF条款
10-jan-200002350flipper显得异常饥饿的今天。
三多餐10510-jan-200009945spread。
身份地位(1:3)NULLIF /空格或其他表达式可以在这里。
这里是数据库中第一行的空值为1的另一个示例。
加载数据
*文件
为表
更换
(N位置(1:2)整数外NULLIF n = 1,
V的位置(3:8)

begindata
一百一十
20lg
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部