sqlldr userid=lgone/tiger control=a.ctl

其中,a.ctl为控制文件,内容:

LOAD DATA --控制文件标识

INFILE 't.dat' -- 要导入的文件

INFILE 'tt.dat' -- 导入多个文件

INFILE * -- "*" 代表要导入的内容就在control文件里,下面的BEGINDATA后面就是导入的内容

INSERT --数据载入方式,有四种

INTO TABLE table_name -- 指定装入的表

BADFILE 'c:bad.txt' --指定坏文件地址

LOGFILE 'c:log.txt' --log文件

DISCARD 'c:discard.txt' --包含丢弃数据的文件

ERRORS=1000 --指定错误的数目

可以使用sqlldr查看帮助。

[@more@]

以下是4种装入表的方式:

APPEND 原先的表有数据,就加在后面

INSERT 装载空表 如果原先的表有数据 sqlloader会停止,默认值

REPLACE 原先的表有数据,原先的数据会全部删除

TRUNCATE 指定的内容和replace的相同 会用truncate语句删除现存数据

指定的TERMINATED可以在表的开头,也可在表的内部字段部分:

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' --OPTIONALLY ENCLOSED BY是指字段值用什么括起来,平时我们都是用单引号,如'value'

装载这种数据: 10,lg,"""lg""","lg,lg"

在表中结果: 10 lg "lg" lg,lg

TERMINATED BY X'09' -- 表示字段之间通过制表符tab键(以十六进制格式 '09' 表示 )分割,也可以把FIELDS TERMINATED BY ';'分号表示成ascii编码

TERMINATED BY WRITESPACE -- 以空白分割,装载这种数据: 10 lg lg

(col_1 [interger external] TERMINATED BY ',' ,

col_2 [date "dd-mon-yyy"] TERMINATED BY ',' ,

col_3 [char] TERMINATED BY ',' OPTIONALLY ENCLOSED BY 'lg' )

当某列为空,不存在对应值:

TRAILING NULLCOLS --如果某个字段没有对应的值时(空格、空白、或null),被当作null列,向表中插入null

不导入某列:

( col_1 , col_2 ,col_filler FILLER --FILLER 关键字(不是filter)指定此列(第三列)的数值不会被装载,如: lg,lg,not,结果 lg lg)

也可以写成这样:( col_1 , col_2 ) --数据文件中存在超过两列数据,但是只导入前两列

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 列将为空

跳过数据行,可以用 "SKIP n" 关键字来指定导入时可以跳过多少行数据。如:

INTO TABLE load_positional_data

SKIP 5

当没声明FIELDS TERMINATED BY ','用位置告诉字段装载数据:

(

col_1 position(1:2), --1到2,(01) 代表第一个字符

col_2 position(3:10), --3到10

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

col_4 position(1:16),

col_5 position(3:10) char(8) -- 指定字段的类型

)

BEGINDATA -- 对应开始的 INFILE * 要导入的内容就在control文件里,注意begindata后的数值前面不能有空格

10,Sql,what

20,lg,show

使用函数(包括自定义函数)、日期的某种表达方式:

FIELDS TERMINATED BY ','

(DEPTNO,

DNAME "upper(:dname)", -- 使用函数

LOC "upper(:loc)",

LAST_UPDATED date 'dd/mm/yyyy', --或'dd-month-yyyy'等,也可以使用自定义函数LAST_UPDATED "my_to_date( :last_updated )" , my_to_date()为自定义函数

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

)

载入有换行符的数据:

注意: unix 和 windows换行符不同 & /n

(......

COMMENTS "replace(:comments,'n',chr(10))" --replace 的使用帮助转换换行符

......

)

载入每行的行号:

......

( seqno RECNUM --载入每行的行号

text Position(1:20))

BEGINDATA

fsdfasj --自动分配一行号给载入 表t 的seqno字段, 此行行号为1

fasdjfasdfl --此行行号为2

合并多行记录为一行记录:

CONCATENATE: - use when SQL*Loader should combine the same number of physical records together to form one logical record.

CONTINUEIF - use if a condition indicates that multiple records should be treated as one. Eg. by having a '#' character in column 1.

LOAD DATA

INFILE *

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

INTO TABLE DEPT

......

(DEPTNO,

DNAME "upper(:dname)",

LOC "upper(:loc)",

LAST_UPDATED date 'dd/mm/yyyy'

)

BEGINDATA

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

Virginia,

1/5/2000

这列子用 continueif list="," 也可以,告诉sqlldr在每行的末尾找逗号 找到逗号就把下一行附加到上一行.

LOAD DATA

INFILE *

continueif this(1:1) = '-' -- 找每行的开始是否有连接字符'-',有就把下一行连接为一行:

如 -10,Sales,Virginia,

1/5/2000 就是一行 10,Sales,Virginia,1/5/2000

其中1:1 表示从第一行开始 并在第一行结束 还有continueif next, 但continueif list最理想

将数据导入多个表:

LOAD DATA

INFILE *

REPLACE

INTO TABLE emp

WHEN empno != ' '

( empno POSITION(1:4) INTEGER EXTERNAL,

ename POSITION(6:15) CHAR,

deptno POSITION(17:18) CHAR,

mgr POSITION(20:23) INTEGER EXTERNAL

)

INTO TABLE proj

WHEN projno != ' '

( projno POSITION(25:27) INTEGER EXTERNAL,

empno POSITION(1:4) INTEGER EXTERNAL

)

导入数据时修改数据:

在导入数据到数据库时,可以修改数据。注意,这仅适合于常规导入,并不适合 direct导入方式.

LOAD DATA

INFILE *

INTO TABLE modified_data

( rec_no "my_db_sequence.nextval",

region CONSTANT '31',

time_loaded "to_char(SYSDATE, 'HH24:MI')",

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

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

data3 POSITION(16:22)"to_date(:data3, 'YYMMDD')"

)

BEGINDATA

11111AAAAAAAAAA991201

22222BBBBBBBBBB990112

LOAD DATA

INFILE 'mail_orders.txt'

BADFILE 'bad_orders.txt'

APPEND

INTO TABLE mailing_list

FIELDS TERMINATED BY ","

( addr,

city,

state,

zipcode,

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

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

mailing_state

)

SQL*Loader 数据的提交:

一般情况下是在导入数据文件数据后提交的。也可以通过指定 ROWS= 参数来指定每次提交记录数。

提高 SQL*Loader 的性能:

1) 一个简单而容易忽略的问题是,没有对导入的表使用任何索引和/或约束(主键)。如果这样做,甚至在使用ROWS=参数时,会很明显降低数据库导入性能。

2) 可以添加 DIRECT=TRUE来提高导入数据的性能。当然,在很多情况下,不能使用此参数。

3) 通过指定 UNRECOVERABLE选项,可以关闭数据库的日志。这个选项只能和 direct 一起使用。

4) 可以同时运行多个导入任务.

常规导入与direct导入方式的区别:

常规导入可以通过使用 INSERT语句来导入数据。Direct导入可以跳过数据库的相关逻辑(DIRECT=TRUE),而直接将数据导入到数据文件中。

oracle sqlldr decode,sqlldr的用法总结相关推荐

  1. oracle 数据库 decode()用法 sign()用法 rownum用法 tjd面试真题

    select decode (sign(0),1,'a','b') from dual decode(条件,值1,返回值1,值2,返回值2,-值n,返回值n,缺省值) sign函数 :比较大小函数 s ...

  2. python decode函数的用法_Oracle DECODE函数的用法详解

    Oracle DECODE函数 使用方法: 1.比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 sign()函数根据某个值 ...

  3. oracle中DECODE与CASE的用法区别

    对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...

  4. oracle 的wecate函数,1.Oracle中decode()函数用法

    1.Oracle中decode函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻 ...

  5. oracle+decode函数用法,oracle中decode函数用法

    oracle中decode函数用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DECODE函数相当于一条件语句(IF ...

  6. Oracle 的 decode 函数用法

    Oracle 中 decode 函数用法 decode函数的含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THE ...

  7. oracle中的to_number,Oracle中to_number()函数的用法

    to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...

  8. decode函数的用法(decode函数的用法python二进制)

    DECODE()函数用法是什么? 例如:表table_subject,有subject_name列.要求按照:语.数.外的顺序进行排序.这时,就可以非常轻松的使用Decode完成要求了. select ...

  9. oracle 中decode函数

    Oracle 中 decode 函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,-值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译 ...

  10. Decode 函数的用法

    1.根据己知值排序 select a,b from c where a in (3,2,4,1) order by decode(a,3,1,2,2,4,3,1,4) 2.比较大小 select de ...

最新文章

  1. 【Xamarin】揭秘生成配置
  2. layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法
  3. python调用大漠插件_Burp Extender Apis 插件开发 (一)
  4. python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)
  5. Python 匿名函数 lambda - Python零基础入门教程
  6. c++new时赋初值_C高级编程精髓之内存管理,万千码农踩过的雷,大神带你走出雷区...
  7. 非空验证 win窗体控件
  8. vue中this.init用法_Vue中的this.$options.data()和this.$data用法说明
  9. Spring框架----Confinguration和Component-Scan注解
  10. 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
  11. 【组合数学】多项式定理 ( 多项式系数 | 多重集全排列 | 对应放球子模型方案数 | 多项式系数相关恒等式 )
  12. 8个酷炫的GitHub技巧
  13. 推荐5款免费好用的chatGPT平台
  14. Google 释出开源软件漏洞扫描工具 OSV-Scanner​
  15. idea配置springboot
  16. android关机闹钟设计思路
  17. 磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走
  18. Spring Boot入门教程(四十六): @Async
  19. JSX语法使用详解——终极版
  20. 湖北省三甲复审评审资料(2011年版第七章--信息科相关)

热门文章

  1. 计算机点击右键管理闪退,Win7系统桌面鼠标右键菜单出现闪退解决方法
  2. SHFileOperation删除文件夹
  3. sola染毒文件恢复工具
  4. [速记] 网络安全复习——选择题汇总
  5. 刷机必备:BlackBerry ROM,桌面管理器下载
  6. [转] DevExpress GridView 排序状态下新增行不参与排序
  7. 摄影毁一生单反穷三代顺口溜_哪款便宜的单反相机好
  8. 另一种活法之——不要总把自己当千里马
  9. 华为OceanStor Pacific斩获IO500榜单第二,数据存储的时与势
  10. 巨人综合音源优化版 – East West Quantum Leap Colossus Kontakt