Oracle 使用SQL*Loader导入文本数据

把txt或者csv文件导入oracle最方便的方法是通过plsql的文本导入器导入,但是导入大批量数据时文本导入器效率慢,可以使用oracle命令行sqlldr导入更快速。

sqlldr介绍:

SQL*Loader将外部文件中的数据加载到Oracle数据库表中,SQL使用两个文件:数据文件;控制文件。

数据文件就是你的txt或者csv文本文件,控制文件是你写的命令。

例如:

sqlldr userid=wjz/abc123456 control=sql_csv.ctl log=sqlldr_optionally_enclosed.log 

其中ctl就是控制文件,log是日志,userid是oracle的用户和密码。

ctl文件如下:

options(skip=1,ROWS=1000)
load data
CHARACTERSET ZHS16GBK
infile '/home/oracle/test.csv'
insert into table "test" 
fields terminated by ','
(
  ACCT_MONTH,
  ADDRESS_ID,
  ADDRESS_NAME,
  USER_NUM,
  IPTV_NUM,
  KD_NUM,
  GH_NUM,
  IS_FTTH,
  MOFFICE_ID,
  USER_ATTR,
  QZKD_NUM,
  WIFI_NUM,
  FTTRC_NUM,
  FTTRZ_NUM
)

OPTIONS (skip=n,rows=y,readsize=1048576,bindsize =256000) 其中skip:表示跳过数据中的第n行;rows:每达到y行时进行commit操作;readsize:读取缓冲区大小;bindsize:绑定缓冲区大小.

infile是你要导入的数据文件

CHARACTERSET ZHS16GBK         根据数据库编码加上这一编码格式,不然导入结果乱码

insert :默认方式,在导入记录前要求表为空;
append :在表中追加新导入的记录;
replace :删除旧记录(等价delete from table语句),替换成新导入的记录;
truncate:删除旧记录(等价truncate table语句),替换成新导入的记录;
into table后面指定导入数据库表,且表名必须大写;

FIELDS TERMINATED BY ‘,’ ##加载时每个列的值都以逗号分隔。
OPTIONALLY ENCLOSED BY ‘"’ ##部分字段可以用双引号包含。

执行效率测试:

使用plsql,每200条数据commit提交,导入时间共计  11分钟

使用sqlddr,每200条数据commit提交,导入时间共:2分钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大宇进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值