重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2868|回复: 0
打印 上一主题 下一主题

[原创] 用 sqlldr加载Excel等其他文档内容到oracle

[复制链接]
跳转到指定楼层
楼主
发表于 2015-3-30 17:20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

1.首先将excel文档保存为csv格式 我命名为case2.dat//Windows下另存为  点保存类型即可找到CSV格式

2.将此文件转存到oracle存在的操作系统某一路径(我的为redhat linux6.4)

3.创建控制文件:
vi case2.ctl
输入以下:
LOAD DATA
INFILE case2.dat  //csv文件名
TRUNCATE INTO TABLE lt //lt为目标表名 **此处truncate为插入属性 另外还有其他参数 实际操作前务必查看相应参数,避免数据丢失  此外还有insert append replace truncate
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY '"'  //OPTIONALLY ENCLOSED BY '"' 制定参数指明界定符 csv格式一般为"
(id,test) //字段名,必须语表中相同,顺序可不同


4.执行命令  sqlldr scott/scott control=case2.ctl 

5.完成


若无分隔符,使用的定长字符串 可将控制文件修改:


LOAD DATA
INFILE ldr_case3.dat
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20)
)

各种其他形式:


列多

LOAD DATA
INFILE ldr_case3.dat
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20),
COMM "0"
)


截取

LOAD DATA
INFILE ldr_case3.dat
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20),
COMM "substr(:SAL,1,1)"
)



过滤

LOAD DATA
INFILE ldr_case6.dat
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:6),
TCOL FILLER position(8:11),
JOB position(13:21),
SAL position(23:26)
)


导入不同表

LOAD DATA
INFILE ldr_case9.dat
DISCARDFILE ldr_case9.dsc
TRUNCATE
 INTO TABLE BONUS
  WHEN TAB='BON'
  (TAB FILLER POSITION(1:3),
   ENAME POSITION(5:9) ,
   JOB POSITION(*+1:18),
   SAL POSITION(*+1) 
   )
 INTO TABLE MANAGER
  WHEN TAB = 'MGR'
  (TAB FILLER POSITION(1:3),
   MGRNO POSITION(4:5) ,
   MNAME POSITION(7:13),
   JOB POSITION(*+1))


略过前三行数据


sqlldr scott/scott control=case10.ctl skip=3



导入从第三行到第八行

sqlldr scott/scott control=case10.ctl skip=3 load=6


更改换行符

LOAD DATA
INFILE ldr_case11_1.dat
TRUNCATE INTO TABLE MANAGER
FIELDS TERMINATED BY ","
(MGRNO,
 MNAME,
 JOB,
 REMARK "replace(:remark,'\\n',chr(10))"
)


定长处理换行


LOAD DATA
INFILE ldr_case11_2.dat "fix 68"
TRUNCATE INTO TABLE MANAGER
(
MGRNO position(1:2),
MNAME position(*+1:10),
JOB position(*+1:24),
REMARK position(*+1:65)
)



行尾部标示换行

LOAD DATA
INFILE ldr_case11_4.dat "str '|\r\n'"
TRUNCATE INTO TABLE MANAGER
FIELDS TERMINATED BY ','
(MGRNO, MNAME, JOB, REMARK)

数据独立保存的情况

LOAD DATA
INFILE ldr_case12_2.dat
TRUNCATE INTO TABLE LOBTBL
(CREATE_DATE position(1:17) date 'yyyy-mm-dd hh24:mi',
 FILESIZE position(*+1:25) "to_number(:FILESIZE,'99,999,999')",
 FILEOWNER position(*+1:34),
 FILENAME position(*+1) char(200) "substr(:FILENAME,instr(:FILENAME,'\\',-1)+1)",
 FILEDATA LOBFILE(FILENAME) TERMINATED BY EOF)

将没有值得列置为NULL
LOAD DATA
INFILE ldr_case13.dat
TRUNCATE INTO TABLE BONUS
FIELDS TERMINATED BY "," TRAILING NULLCOLS
(ENAME,JOB,SAL)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-5-18 19:04 , Processed in 0.092335 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表