2021-07-21

sqlldr加载方式:

直接路径加载--->采用这种模式,SQLLDR不使用SQL;而是直接格式化数据库块,而绕过整个SQL引擎和UNDO生成,同时还可能避开REDO生成

sqlldr较常用的参数:

userid:数据库的连接串 

control:控制文件

skip:跳过行或者记录数

rows:每次提交的记录数

bindsize:每次提交记录数缓冲区大小(字节)

direct:"direct=true或direct=y"为直接路径方式导入,通过direct path api发送数据到服务器端的加载引擎,加载引擎按照数据块的格式处理数据并直接写向数据文件,效率较高

parallel:并行(只有在直接路径加载是有效)

skip_index_maintenance:如果源表上存在索引,那么在导入时会产生索引undo数据且索引的块会读进buffer cache,这将影响导入的效率,因为需要花费大量的实践来维护索引,建议在导入时,将索引手动设置为unusable或执行sqlldr命令时加上参数skip_index_maintenance=true即可,待导入结束后,重建索引alter index index_name rebuild nologging

readsize:缓冲区大小(字节),默认1048576

columnarrayrows:指定直接路径加载时流缓冲区的行数,默认5000

streamsize:指定直接路径加载时流缓冲区的大小(字节),默认256000

控制文件:

load data
characterset AL32UTF8
INFILE 'ches.csv'
INSERT 
INTO TABLE chen_tmp_txn
[when org = i_org]              ----数据刷选
fields terminated by ','
optionally enclosed by '"'
trailing nullcols
(
org  char(90),
acq_dt to_date("yyyy-mm-dd"),
sum to_number(:sum ),
txn_date date "yyyy-mm-dd hh24:mi:ss",
con ":id||:name",        --表中CON列的值是ID和NAME的组合值
id integer external,   -- integer external 表示插入的数据是string,如果只保留integer,表示插入的数据是二进制
name "upper(:name)",     --将插入的值转换为大写
)

说明:

1、INFILE后面都是要加载的数据文件,如果用 * 则表示数据就在控制文件内

2、操作类型:

      1)insert:默认值,装载空表,如果原先的表有数据,sqlloader会停止
      2)append:原先的表有数据 就在表中追加新记录
      3)replace:删除旧记录,替换成新装载的记录
      4)truncate:删除旧记录,替换成新装载的记录

3、字段分隔符:

       1)fields terminated by ','   -----逗号分割

       2)fields terminated by '|'   -----竖线分割

       3)fields terminated whitespace   -----空白符分割

       4)fields terminated X'09'    -----制表符分割

       ........................................................

4、 1)optionally enclosed by '"' :字段用什么字符包括起来

       2)trailing nullcols:字段没有对应的值时允许为空

5、指定字段的数据类型:sqlldr默认字符为char,加载数据时,需根据源数据可表字段的字符型          做相的转换,如acq_dt为date类型,则表示为to_date("yyyy-mm-dd")

执行命令:

sqlldr userid=tiger/tiger123@orcl control=ches.ctl log=ches.log skip=1 direct=true parallel=true skip_index_maintenance=true readsize=1048576 columnarrayrows=10000 streamsize=5126000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值