SqlLoad常用技巧总结

1、控制文件中注释用“--”

2、为防止导入出现中文乱码,在控制文件中加入字符集控制

LOAD DATA

CHARACTERSET ZHS16GBK 

3、让某一列成为行号,用RECNUM关键字

[sql]view plaincopyprint?

  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关键字

[sql]view plaincopyprint?

  1. LOAD DATA

  2. TRUNCATE INTO TABLE T1

  3. FIELDS TERMINATED BY ‘,‘

  4. ( field1,

  5. field2 FILLER,

  6. field3

  7. )

5、过滤行

在INTO TABLE
table_name后加WHEN过滤条件,但功能有限,如果以竖线分隔符的文件,不能实现字段级的过滤,定长的还好。

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE ‘mydata.dat‘

  3. BADFILE ‘mydata.bad‘

  4. DISCARDFILE ‘mydata.dis‘

  5. APPEND

  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 (SKIP 1)选项

也可以写在命令行中,如:

[sql]view plaincopyprint?

  1. sqlldr sms/admin control=test.ctl skip=1

7、TRAILING
NULLCOLS的使用,作用是表的字段没有对应的值时允许为空

如:

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE *

  3. INTO TABLE DEPT

  4. REPLACE

  5. FIELDS TERMINATED BY ‘,‘

  6. TRAILING NULLCOLS // 其实下面的ENTIRE_LINE在BEGINDATA后面的数据中是没有直接对应的列的值的如果第一行改为 10,Sales,Virginia,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||:dname||:loc||:last_updated"

  12. )

  13. BEGINDATA

  14. 10,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、添加、修改数据

[sql]view plaincopyprint?

  1. (1)、

  2. LOAD DATA

  3. INFILE *

  4. INTO TABLE tmp_test

  5. ( rec_no                      "my_db_sequence.nextval",

  6. region                      CONSTANT ‘31‘,

  7. time_loaded                 "to_char(SYSDATE, ‘HH24:MI‘)",

  8. data1        POSITION(1:5) ":data1/100",

  9. data2        POSITION(6:15) "upper(:data2)",

  10. data3        POSITION(16:22)"to_date(:data3, ‘YYMMDD‘)"

  11. )

  12. BEGINDATA

  13. 11111AAAAAAAAAA991201

  14. 22222BBBBBBBBBB990112

  15. (2)、

  16. LOAD DATA

  17. INFILE ‘mail_orders.txt‘

  18. BADFILE ‘bad_orders.txt‘

  19. APPEND

  20. INTO TABLE mailing_list

  21. FIELDS TERMINATED BY ","

  22. ( addr,

  23. city,

  24. state,

  25. zipcode,

  26. mailing_addr   "decode(:mailing_addr, null, :addr, :mailing_addr)",

  27. mailing_city   "decode(:mailing_city, null, :city, :mailing_city)",

  28. mailing_state

  29. )

9、合并多行记录为一行记录

通过关键字concatenate 把几行的记录看成一行记录

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE *

  3. concatenate 3 // 通过关键字concatenate 把几行的记录看成一行记录

  4. INTO TABLE DEPT

  5. replace

  6. FIELDS TERMINATED BY ‘,‘

  7. (DEPTNO,

  8. DNAME "upper(:dname)",

  9. LOC "upper(:loc)",

  10. LAST_UPDATED date ‘dd/mm/yyyy‘

  11. )

  12. BEGINDATA

  13. 10,Sales, // 其实这3行看成一行 10,Sales,Virginia,1/5/2000

  14. Virginia,

  15. 1/5/2000

10、用”|+|”分隔符,避免数据混淆

fields terminated by "|+|"

11、如果数据文件包含在控制文件中,用INFILE *

如下:

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE *

  3. append

  4. INTO TABLE tmp_test

  5. FIELDS TERMINATED BY ","

  6. OPTIONALLY ENCLOSED BY ‘"‘

  7. TRAILING NULLCOLS

  8. ( data1,

  9. data2

  10. )

  11. BEGINDATA

  12. 11111,AAAAAAAAAA

  13. 22222,"A,B,C,D,"

12、一次导入多个文件到同一个表

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE file1.dat

  3. INFILE file2.dat

  4. INFILE file3.dat

  5. APPEND

  6. INTO TABLE emp

  7. ( empno POSITION(1:4)   INTEGER EXTERNAL,

  8. ename POSITION(6:15) CHAR,

  9. deptno POSITION(17:18) CHAR,

  10. mgr    POSITION(20:23) INTEGER EXTERNAL

  11. )

13、将一个文件导入到不同的表

[sql]view plaincopyprint?

  1. (1)、

  2. LOAD DATA

  3. INFILE *

  4. INTO TABLE tab1 WHEN tab = ‘tab1‘

  5. ( tab FILLER CHAR(4),

  6. col1 INTEGER

  7. )

  8. INTO TABLE tab2 WHEN tab = ‘tab2‘

  9. ( tab FILLER POSITION(1:4),

  10. col1 INTEGER

  11. )

  12. BEGINDATA

  13. tab1|1

  14. tab1|2

  15. tab2|2

  16. tab3|3

  17. ==============

  18. (2)、

  19. LOAD DATA

  20. INFILE ‘mydata.dat‘

  21. REPLACE

  22. INTO TABLE emp

  23. WHEN empno != ‘ ‘

  24. ( empno POSITION(1:4)   INTEGER EXTERNAL,

  25. ename POSITION(6:15) CHAR,

  26. deptno POSITION(17:18) CHAR,

  27. mgr    POSITION(20:23) INTEGER EXTERNAL

  28. )

  29. INTO TABLE proj

  30. WHEN projno != ‘ ‘

  31. ( projno POSITION(25:27) INTEGER EXTERNAL,

  32. empno POSITION(1:4)   INTEGER EXTERNAL

  33. )

14、过滤掉的数据文件路径指定

[sql]view plaincopyprint?

  1. /opt/app/oracle/product/10.2.0/bin/sqlldr APS/APS control=/home/oracle/APS_LOAD/ctl/AP_CONTRACT.CTL LOG=/home/oracle/APS_LOAD/log/$yesterday/AP_CONTRACT_$yesterday.log bad=/home/oracle/APS_LOAD/bad/DUE_BILL_$yesterday.bad rows=10000 readsize=20000000 bindsize=20000000  DISCARD=/home/oracle/APS_LOAD/bad/discard_ts.dis

15、附:测试用控制文件

[sql]view plaincopyprint?

  1. LOAD DATA

  2. INFILE ‘/home/oracle/APS_LOAD/dat/APS_AP_CONTRACT.dat‘

  3. TRUNCATE

  4. INTO TABLE AP_CONTRACT

  5. WHEN (01)<>‘1‘

  6. FIELDS TERMINATED BY "|"

  7. TRAILING NULLCOLS

  8. (

  9. AGMT_NO                  "(TRIM(:AGMT_NO               ))",

  10. CONTRACT_NO         FILLER, --     "(TRIM(:CONTRACT_NO           ))",

  11. LOAN_AMT                 "(TRIM(:LOAN_AMT              ))",

  12. AGMT_HOLDER              "(TRIM(:AGMT_HOLDER           ))",

  13. LOAN_TYPE_CD             "(TRIM(:LOAN_TYPE_CD          ))",

  14. CURR_CD                  "(TRIM(:CURR_CD               ))",

  15. BALANCE                  "(TRIM(:BALANCE               ))",

  16. LOAN_DIRC_CD             "(TRIM(:LOAN_DIRC_CD          ))",

  17. AGMT_START_DATE          "(TRIM(:AGMT_START_DATE       ))",

  18. AGMT_END_DATE            "(TRIM(:AGMT_END_DATE         ))",

  19. AGMT_BELONG_ORG_NO       "(TRIM(:AGMT_BELONG_ORG_NO    ))",

  20. MANAGER_NO               "(TRIM(:MANAGER_NO            ))",

  21. PROCESS_RATE             "(TRIM(:PROCESS_RATE          ))",

  22. INSURE_METH_TYPE_CD      "(TRIM(:INSURE_METH_TYPE_CD   ))",

  23. AGMT_SIGN_DATE           "(TRIM(:AGMT_SIGN_DATE        ))",

  24. LOAN_PROP_CD             "(TRIM(:LOAN_PROP_CD          ))",

  25. LOAN_USE_TYPE            "(TRIM(:LOAN_USE_TYPE         ))",

  26. ENTRUST_LOAN_FLAG        "(TRIM(:ENTRUST_LOAN_FLAG     ))",

  27. ENTRUST_NAME             "(TRIM(:ENTRUST_NAME          ))",

  28. FARM_LOAN_FLAG           "(TRIM(:FARM_LOAN_FLAG        ))",

  29. FARM_LOAN_TYPE_CD        "(TRIM(:FARM_LOAN_TYPE_CD     ))",

  30. LOAN_BIZ_TYPE_CD         "(TRIM(:LOAN_BIZ_TYPE_CD      ))",

  31. ID_TEST                       RECNUM ,

  32. CHAR_TEST                     CONSTANT ‘31‘,

  33. SQ                        "sqlldr.nextval",

  34. TEST_4                    "TO_CHAR(SYSDATE,‘YYYYMMDD HH24:MI:SS‘)",

  35. TEST_5                    "(TRIM(:LOAN_BIZ_TYPE_CD)||‘---‘||TRIM(:AGMT_NO))"

  36. )

SqlLoad常用技巧总结,布布扣,bubuko.com

时间: 2024-08-02 23:44:46

SqlLoad常用技巧总结的相关文章

HTML5-移动开发常用技巧与弹性布局的使用

一.移动开发常用技巧 Viewport基本知识 设置布局Viewport的各种信息 1.width=device-width: 设置Viewport视口宽度等于设备宽度 2.initial-scale=1: 网页默认缩放比为1(网页在手持设备上,不会进行默认缩放 3.minimum-scale=1 网页最小缩放比为1 4.maximum-scale=1 网页最小大缩放比为1 5.user-scalable=no 禁止用户手动缩放网页(ios10+ 的设备失效) 在手机站及响应式网站的制作中,网页

【转】oracle存储过程常用技巧

原文链接 http://www.cnblogs.com/chinafine/archive/2010/07/12/1776102.html 我们在进行pl/sql编程时打交道最多的就是存储过程了.存储过程的结构是非常的简单的,我们在这里除了学习存储过程的基本结构外,还会学习编写存储过程时相关的一些实用的知识.如:游标的处理,异常的处理,集合的选择等等 1.存储过程结构 1.1 第一个存储过程 create or replace procedure proc1( p_para1 varchar2,

.Net常用技巧_导出 Excel 和相关打印设置

Excel.Application myExcel = new Excel.Application();发 表Excel.Workbook workbookData = myExcel.Application.Workbooks.Add(Excel.XlWBATemplate.xlWBATWorksheet);Excel.Worksheet xlSheet = (Worksheet)workbookData.Worksheets[1];//取得sheet1 1) 显示当前窗口: xlSheet.

mysql 常用技巧

1.正则使用 比 LIKE 会牺牲很多的系统资源 尽量不要用 正则的语法和JS PHP 差不多 select * from t1 where email REGEXP "@163[,.]com$"; select * from t1 where email like "%@163.com" or email like "%@163,com" 2.REPLACE 函数的使用 UPDATE `v9_zhushou` SET `thumb` = REP

sqlmap常用技巧整理

言 通过在乌云网上出现的很多SQL注入漏洞,因此来总结一下,大致使用SQLMAP所遇到的参数. 基本结构 基本SQLMAP的使用方式就如下所示,使用参数式的方式,按需求添加. 12 sqlmap.py -u "http:// *" --data="a=b" -p a --level 3 --random-agent --referer="a" --technique T --dbms=mysql --cookie="cookie&quo

短线选股操作常用技巧

股票短线通常是指在一个星期或两个时期以内的时期,股票投资者只想赚取短期差价收益,而不去关注股票的基本情况,主要依据技术图表分析.一般的投资者做短线通常都是以两三天为限,一旦没有差价可赚或股价下跌,就平仓一走了之,再去买其他股票做短线.作为短线炒股,选股很重要,因为短线讲究的是一个快,快进快出,绝不拖延,频率较快,不同于长线的价值投资,所以换股会比较频繁,这种情况下选股就比较讲究. 一.短线选股操作常用技巧 1.首选短期热点龙头股 短线操作的对象就是要选择被市场广泛关注,而大部分人还在犹豫而不敢介

.Net常用技巧_VS2005[C#] 操作 Excel 全攻略(转)

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using Microsoft.Office.Interop.Excel; using System.Data.SqlClient; using System.Data.

.Net常用技巧_操作Excel知识点

C#操作Excel知识点 近期在使用C#操作excel,主要是读取excel模板,复制其中的模板sheet页,生成多个sheet页填充相应数据后另存到excel文件,所用到的知识点如下. 一.添加引用和命名空间 添加Microsoft.Office.Interop.Excel引用,它的默认路径是C:\Program Files\Microsoft Visual Studio 9.0\Visual Studio Tools for Office\PIA\Office12\Microsoft.Off

Google搜索的常用技巧

个人搜索方案 1.选择合适的搜索词,一些行业术语或专家名字可以带来更加高质量的结果. 2.搜索词手动使用空格分隔,先进行第一次搜索,看搜索结果标题是否满足预期,如果不满足,采用更换关键词,添加关键词,排除关键词的方式进行调整. 3.在搜索时刻适当的采用适当的Google高级指令来协助过滤搜索结果. 4.打开搜索结果页的同时10个页面,即时关闭用户体验差的页面.主要是为了较少自己的查找结果时间.个人经验告诉我,用户体验差的网站大部分都不会满足我的需求.我相信一定会有比它更好结果的网站出现.然后再去