您的位置:首页 > 数据库

sqlload使用小结!

2016-10-31 09:10 148 查看
 sql
load的一点小总结  

  

sqlldr userid=lgone/tiger
control=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 lg
lg  

  

TRAILING NULLCOLS *************
表的字段没有对应的值时允许为空  

  

*************
下面是表的字段  

(  

col_1 , col_2 ,col_filler FILLER // FILLER 关键字
此列的数值不会被装载  

// 如: lg,lg,not 结果 lg
lg  

)  

// 当没声明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 BY
x'09' 的情况  

LOAD DATA  

INFILE *  

INTO TABLE DEPT  

REPLACE  

FIELDS TERMINATED BY
WHITESPACE  

-- FIELDS TERMINATED BY
x'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 Be
Loaded,Accounting,"Virginia,USA"  

  

4 ***** position的列子  

LOAD DATA  

INFILE *  

INTO TABLE DEPT  

REPLACE  

( DEPTNO position(1:2),  

DNAME position(*:16), //
这个字段的开始位置在前一字段的结束位置  

LOC position(*:29),  

ENTIRE_LINE
position(1:29)  

)  

BEGINDATA  

10Accounting Virginia,USA  

  

5 ***** 使用函数 日期的一种表达 TRAILING
NULLCOLS的使用  

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' 等  

ENTIRE_LINE
":deptno||:dname||:loc||:last_updated"  

)  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: