oracle sqlldr decode,sqlldr的用法总结
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的用法总结相关推荐
- oracle 数据库 decode()用法 sign()用法 rownum用法 tjd面试真题
select decode (sign(0),1,'a','b') from dual decode(条件,值1,返回值1,值2,返回值2,-值n,返回值n,缺省值) sign函数 :比较大小函数 s ...
- python decode函数的用法_Oracle DECODE函数的用法详解
Oracle DECODE函数 使用方法: 1.比较大小 select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值 sign()函数根据某个值 ...
- oracle中DECODE与CASE的用法区别
对于CASE与DECODE其实并没有太多的区别,他们都是用来实现逻辑判断.Oracle的DECODE函数功能很强,灵活运用的话可以避免多次扫描,从而提高查询的性能.而CASE是9i以后提供的语法,这个 ...
- oracle 的wecate函数,1.Oracle中decode()函数用法
1.Oracle中decode函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻 ...
- oracle+decode函数用法,oracle中decode函数用法
oracle中decode函数用法以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DECODE函数相当于一条件语句(IF ...
- Oracle 的 decode 函数用法
Oracle 中 decode 函数用法 decode函数的含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THE ...
- oracle中的to_number,Oracle中to_number()函数的用法
to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...
- decode函数的用法(decode函数的用法python二进制)
DECODE()函数用法是什么? 例如:表table_subject,有subject_name列.要求按照:语.数.外的顺序进行排序.这时,就可以非常轻松的使用Decode完成要求了. select ...
- oracle 中decode函数
Oracle 中 decode 函数用法 含义解释: decode(条件,值1,返回值1,值2,返回值2,-值n,返回值n,缺省值) 该函数的含义如下: IF 条件=值1 THEN RETURN(翻译 ...
- 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 ...
最新文章
- 【Xamarin】揭秘生成配置
- layui表单提交使用form.on(‘submit(sub)‘,function (){}) 使用ajax请求时回调不执行的原因及解决方法
- python调用大漠插件_Burp Extender Apis 插件开发 (一)
- python形参中传入两个实参_认识Python函数的两个概念:形参与实参(16)
- Python 匿名函数 lambda - Python零基础入门教程
- c++new时赋初值_C高级编程精髓之内存管理,万千码农踩过的雷,大神带你走出雷区...
- 非空验证 win窗体控件
- vue中this.init用法_Vue中的this.$options.data()和this.$data用法说明
- Spring框架----Confinguration和Component-Scan注解
- 机器人手眼标定原理介绍(含详细推导过程)使用Tsai-Lenz算法
- 【组合数学】多项式定理 ( 多项式系数 | 多重集全排列 | 对应放球子模型方案数 | 多项式系数相关恒等式 )
- 8个酷炫的GitHub技巧
- 推荐5款免费好用的chatGPT平台
- Google 释出开源软件漏洞扫描工具 OSV-Scanner​
- idea配置springboot
- android关机闹钟设计思路
- 磨金石教育设计干货分享|20个海报设计小技巧,果断打包带走
- Spring Boot入门教程(四十六): @Async
- JSX语法使用详解——终极版
- 湖北省三甲复审评审资料(2011年版第七章--信息科相关)
热门文章
- 计算机点击右键管理闪退,Win7系统桌面鼠标右键菜单出现闪退解决方法
- SHFileOperation删除文件夹
- sola染毒文件恢复工具
- [速记] 网络安全复习——选择题汇总
- 刷机必备:BlackBerry ROM,桌面管理器下载
- [转] DevExpress GridView 排序状态下新增行不参与排序
- 摄影毁一生单反穷三代顺口溜_哪款便宜的单反相机好
- 另一种活法之——不要总把自己当千里马
- 华为OceanStor Pacific斩获IO500榜单第二,数据存储的时与势
- 巨人综合音源优化版 – East West Quantum Leap Colossus Kontakt