sqlload使用小结!
来源:互联网 发布:三维立体图软件 编辑:程序博客网 时间:2024/06/05 16:34
sqlldr userid=lgone/tigercontrol=a.ctl
LOAD DATA
INFILE 't.dat' //要导入的文件
// INFILE 'tt.date' //导入多个文件
// INFILE * // 要导入的内容就在control文件里下面的BEGINDATA后面就是导入的内容
INTO TABLE table_name //指定装入的表
BADFILE 'c:\bad.txt' //指定坏文件地址
*************以下是4种装入表的方式
APPEND // 原先的表有数据就加在后面
// INSERT // 装载空表 如果原先的表有数据 sqlloader会停止默认值
// REPLACE // 原先的表有数据原先的数据会全部删除
// TRUNCATE // 指定的内容和replace的相同会用truncate语句删除现存数据
************* 指定的TERMINATED可以在表的开头也可在表的内部字段部分
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY'"'
// 装载这种数据:10,lg,"""lg""","lg,lg"
// 在表中结果: 10 lg "lg"lg,lg
// TERMINATED BY X '09' // 以十六进制格式 '09'表示的
// TERMINATED BY WRITESPACE // 装载这种数据: 10 lglg
TRAILING NULLCOLS *************表的字段没有对应的值时允许为空
*************下面是表的字段
(
col_1 , col_2 ,col_filler FILLER // FILLER 关键字此列的数值不会被装载
// 如: lg,lg,not 结果 lglg
)
// 当没声明FIELDS TERMINATED BY ','时
// (
// col_1 [interger external] TERMINATED BY ',',
// col_2 [date "dd-mon-yyy"] TERMINATED BY ',',
// col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY'lg'
// )
// 当没声明FIELDS TERMINATED BY','用位置告诉字段装载数据
// (
// col_1 position(1:2),
// col_2 position(3:10),
// col_3 position(*:16), //这个字段的开始位置在前一字段的结束位置
// col_4 position(1:16),
// col_5 position(3:10) char(8) //指定字段的类型
// )
BEGINDATA // 对应开始的 INFILE *要导入的内容就在control文件里
10,Sql,what
20,lg,show
=====================================================================================
////////////注意begindata后的数值前面不能有空格
1 ***** 普通装载
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY'"'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10,Sales,"""USA"""
20,Accounting,"Virginia,USA"
30,Consulting,Virginia
40,Finance,Virginia
50,"Finance","",Virginia // loc列将为空
60,"Finance",,Virginia // loc列将为空
2 ***** FIELDS TERMINATED BY WHITESPACE 和 FIELDS TERMINATED BYx'09' 的情况
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BYWHITESPACE
-- FIELDS TERMINATED BYx'09'
(DEPTNO,
DNAME,
LOC
)
BEGINDATA
10 Sales Virginia
3 ***** 指定不装载那一列
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY'"'
( DEPTNO,
FILLER_1 FILLER, // 下面的 "Something Not To Be Loaded"将不会被装载
DNAME,
LOC
)
BEGINDATA
20,Something Not To BeLoaded,Accounting,"Virginia,USA"
4 ***** position的列子
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
( DEPTNO position(1:2),
DNAME position(*:16), //这个字段的开始位置在前一字段的结束位置
LOC position(*:29),
ENTIRE_LINEposition(1:29)
)
BEGINDATA
10Accounting Virginia,USA
5 ***** 使用函数 日期的一种表达 TRAILINGNULLCOLS的使用
LOAD DATA
INFILE *
INTO TABLE DEPT
REPLACE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS //其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应
// 的列的值的 如果第一行改为 10,Sales,Virginia,1/5/2000,,就不用TRAILING NULLCOLS了
(DEPTNO,
DNAME "upper(:dname)", //使用函数
LOC "upper(:loc)",
LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式还有'dd-mon-yyyy' 等