资源描述:
《Oracle数据库SqlLoad常用技巧总结.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1、控制文件中注释用“--”。2、为防止导入出现中文乱码,在控制文件中加入字符集控制1.LOAD DATA 2.CHARACTERSET ZHS16GBK 3、让某一列成为行号,用RECNUM关键字1.load data 2.infile * 3.into table t 4.replace 5.( seqno RECNUM //载入每行的行号 6.text Position(1:1024)) 7.BEGINDATA 8.fsdfasj 4、过滤某一列,用FILLER关键字1.LOAD DATA
2、 2.TRUNCATE INTO TABLE T1 3.FIELDS TERMINATED BY ',' 4.( field1, 5.field2 FILLER, 6.field3 7.) 5、过滤行在INTOTABLEtable_name后加WHEN过滤条件,但功能有限,如果以竖线分隔符的文件,不能实现字段级的过滤,定长的还好。1.LOAD DATA 2.INFILE 'mydata.dat' 3.BADFILE 'mydata.bad' 4.DISCARDFILE 'mydata.dis' 5.APPEND
3、 6.INTO TABLE my_selective_table 7.WHEN (01) <> 'H' and (01) <> 'T' and (30:37) = '20031217' 8.( 9.region CONSTANT '31', 10.service_key POSITION(01:11) INTEGER EXTERNAL, 11.call_b_no POSITION(12:29) CHAR 12.) 6、过滤首行,用OPTIONS(SKIP1)选
4、项,也可以写在命令行中,如:sqlldr sms/admin control=test.ctl skip=1 7、TRAILINGNULLCOLS的使用,作用是表的字段没有对应的值时允许为空如:1.LOAD DATA 2.INFILE * 3.INTO TABLE DEPT 4.REPLACE 5.FIELDS TERMINATED BY ',' 6.TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应的列的值的如果第一行改为 10,Sales,V
5、irginia,1/5/2000,, 就不用TRAILING NULLCOLS了 7.(DEPTNO, 8.DNAME "upper(:dname)", // 使用函数 9.LOC "upper(:loc)", 10.LAST_UPDATED date 'dd/mm/yyyy', // 日期的一种表达方式 还有'dd-mon-yyyy' 等 11.ENTIRE_LINE ":deptno
6、
7、:dname
8、
9、:loc
10、
11、:last_updated" 12.) 13.BEGINDATA 14.10
12、,Sales,Virginia,1/5/2000 15.20,Accounting,Virginia,21/6/1999 16.30,Consulting,Virginia,5/1/2000 17.40,Finance,Virginia,15/3/2001 8、添加、修改数据(1)、 1.LOAD DATA 2.INFILE * 3.INTO TABLE tmp_test 4.( rec_no "my_db_sequence.nextval", 5.region
13、 CONSTANT '31', 6.time_loaded "to_char(SYSDATE, 'HH24:MI')", 7.data1 POSITION(1:5) ":data1/100", 8.data2 POSITION(6:15) "upper(:data2)", 9.data3 POSITION(16:22)"to_date(:data3, 'YYMMDD')" 10.) 11.BEGINDATA 12.11111
14、AAAAAAAAAA991201 13.22222BBBBBB