sqlldr的用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
酱油是oracle菜鸟,贴出来一些学习的笔记,希望大神指点指点
sqlldr导数据的时候,如果数据文件有一堆空格,可以这么整
几个sqlplus的设置
set termout off; 是否在屏幕上显示输出内容,off屏幕不显示查询语句,主要与spool结合使用set feedback off; 关闭本次sql命令处理的记录条数,默认为on即去掉最后的已经选择的行数set echo off; 关闭脚本中正在执行的SQL语句的显示
set heading off; 关闭标题的输出,设置为off就去掉了select结果的字段名只显示数据
set trimout on; 去除标准输出每行后面多余的空格
set trimspool on; 将每行后面多余的空格去掉【linesize-实际字符数=多余空格】
各个参数属性
load data
infile '/home/oracle/sql_loader/test.txt' 待加载的数据文件
badfile '/home/oracle/sql_loader/test_bad.txt' 格式不匹配写入坏文件
discardfile'/home/oracle/sql_loader/test_discard.txt' 条件不匹配写入丢弃文件
append into table test_loader 追加的方式插入数据
fields terminated by "," 字段与字段之间的分隔符
trailing nullcols 这句的意思是将没有对应值的列都置为null (owner,object_name,object_id,object_type) 数据插入的对应字段
load data
infile '/home/oracle/emp.txt'
badfile '/home/oracle/bad.txt'
discardfile '/home/oracle/dis.txt'
append
into table t1
fields terminated by ","
trailing nullcols
(empno "trim(:empno)",ename"trim(:ename)")
(1)直接加载比传统加载效率要高
(2)不扫描原来的空数据块
(3)不需要sql解析,减少系统的负载
(4)不经过SGA,而传统加载时经过SGA;
(5)不走DBWR进程,走自己的专属进程,所以速度快
直接加载限制:
(1)不能加载簇表
(2)锁定整个表,在表上有活动事务的时候不能加载
直接加载特点:
(1)直接加载是在所有数据块后面加载新数据块,修改高水位线,不扫描原来的空数据块。
(2)直接加载只产生一点点的管理redo,因为要修改数据字典(也可以讲不产生redo)。
(3)回滚,如果加载失败把新分配数据块抹掉就行了。
(4)无需SGA,无需SQL解析,无需DBWR进程
SCOTT@POD>select owner||','||object_name||','||object_type from dba_objects where rownum<50001; 把object里的东西导进表里
load data
infile '/home/oracle/sqlldr/test.txt'
badfile '/home/oracle/sqlldr/bad.log'
append
into table test
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(owner "trim(wner)",object_name"trim(bject_name)",object_type"trim(bject_name)")
默认加载
[oracle@POD sqlldr]$ sqlldr scott/tiger control='/home/oracle/sqlldr/load.ctl'
导入的时候触发commit point
...
Commit point reached - logical record count 48864
Commit point reached - logical record count 48928
Commit point reached - logical record count 48992
Commit point reached - logical record count 49056
Commit point reached - logical record count 49120
Commit point reached - logical record count 49184
Commit point reached - logical record count 49248
Commit point reached - logical record count 49312
Commit point reached - logical record count 49376
Commit point reached - logical record count 49440
Commit point reached - logical record count 49504
Commit point reached - logical record count 49568
Commit point reached - logical record count 49632
Commit point reached - logical record count 49696