oracle使用SQLLDR导数据

SQLLDR

用法: SQLLDR keyword=value [,keyword=value,...]

控制文件:input.ctl,内容如下:

load data --1、控制文件标识
infile 'test.txt' --2、要输入的数据文件名为test.txt
append into table test --3、向表test中追加记录
fields terminated by X'09' --4、字段终止于X'09',是一个制表符(TAB)
(id,username,password,sj) -----定义列对应顺序

a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上

sqlldr scott/tigger control=d:\ldr_test

将数据导入数据库

1. Excel文件: 另存为.csv文件, csv文件字段以逗号分隔

2. 要加载的文件不是以逗号分隔
a) 修改数据文件,将分隔符替换为逗号
b) 修改控制文件,将FIELDS TERMINATED BY的值修改为实际的分隔符

3. 要加载的数据中包含分隔符
使用FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'

4. 数据文件中没有分隔符
使用position关键字来指定列的开始和结束位置。如:ENAME position(7:15)
position(*+2:15): 直接指定数值的方式叫作绝对编量, 使用*号,相对偏移量
position(*+2:15)表示从上次结束的位置+2的地方开始
position(*)char(9)相对偏移量+类型和长度

5. 数据文件中的列比要导入的表中列少
可以进行赋值
如: ENAME "0" 或 ENAME "substr(:SAL, 1, 1)"

6. 数据文件中的列比要导入的表中列多
使用FILLER关键字,用来指定过滤列
如: TCOL FILLER position(8:11) 表示第8到第11列之间的数据不导入

7. 提供了多个数据文件,要导入同一张表
只需要指定多个INFILE参数


8. 同一个数据文件,要导入不同表
使用WHEN关键字,如: WHEN TAB='XXX' ( TAB FILLER POSITION(1:3) ...)

9. 前N行不导入
在SQLLDR命令后面加SKIP指定
SQLLDR SCOTT/TIGGER CONTROL=LDR_TEST.CTL SKIP=3
表示前3行不导入,从第4行开始加载

10. 数据中有换行符
在数据加载前处理字段的数据,将里面的“\n”字符替换为chr(10),即标准换行符
ENAME "replace(:ename, '\\n', chr(10))"

11. 指定FIX属性处理换行符(定长数据文件专用)
如:INFILE ldr_test.dat "fix 68"
FIX是INFILE关键字的一个属性,还有VAR、STR

12. 导入大字段(CLOB类型)
a) 数据保存在数据文件中
b) 数据保存在独立的文件中
FILENAME position(*+1) char(200) "substr(:FILENAME, instr(:FILENAME, '\\', -1) + 1)"

13. 某些字段无值

  使用TRAILING NULLCOLS , 如:FIELDS TERMINATED BY "," TRAILING NULLCOLS


以上内容摘自<三思ORACLE>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值