您的位置:首页 > 数据库 > Oracle

sqlldr入库Oracle

2016-04-10 17:41 483 查看
开发中常常遇到这种情况:
客户提供一个Excel数据,我们需要将其需要的字段提取到数据库,直接拷贝赋值太浪费时间。

1、利用Excel自带的强大的sql方法,将需要的列通过sql提取到新的Sheet页中
sql 语法:select SGSN_ID,RNC_ID,LAC,CI, CITY_ID, CITY from [s_site$]
2、将新的excel文件保存为csv文件
3、编写ctl文件
4、打开命令窗口,执行sqlldr入库命令
命令格式:sqlldr userid=kp/kp@192.168.57.43:1521/miq data=D:/area_data_temp/s_site.csv control=D:/area_data_temp/s_site.ctl log=D:/area_data_temp/s_site.log bad=D:/area_data_temp/s_site.bad readsize=20971520 bindsize=20971520 rows=10000000

简单命令:sqlldr userid=kp/kp@192.168.57.43:1521/miq data=D:/s_site.csv control=D:/s_site.ctl
5、编写bat文件直接双击运行sqlldr命令;直接将上面命令赋值到bat文件中即可

目录结构:









注意:
一、ctl文件格式:(truncate方式)

OPTIONS (SILENT=(ALL),DIRECT=TRUE)
UNRECOVERABLE
LOAD DATA INFILE 'D:/area_data_temp/s_site.csv'
TRUNCATE INTO TABLE S_SITE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(SGSN_ID,RNC_ID,LAC,CI,CITY_ID,CITY char(1024),ID SEQUENCE(MAX,1),CRT_TIME "sysdate")

(append方式)

OPTIONS (SILENT=(ALL),DIRECT=TRUE,PARALLEL=TRUE,SKIP_INDEX_MAINTENANCE=TRUE)
UNRECOVERABLE
LOAD DATA INFILE 'D:/area_data_temp/s_site.csv'
APPEND INTO TABLE S_SITE
FIELDS TERMINATED BY ','
TRAILING NULLCOLS
(SGSN_ID,RNC_ID,LAC,CI,CITY_ID,CITY,ID SEQUENCE(MAX,1),CRT_TIME "sysdate")

编写ctl文件注意:
* 指定csv文件路径
* 指定表名
* 指定添加方式(truncate,append)
* 指定分割符(csv默认是用英文逗号分割)
* 指定表的列名(按照csv文件顺序来)
*
* ctl文件如果用到数据库函数则用双引号,如“sysdate”
* sqlldr默认字段长度为255,如果到插入超长文本则需要特殊指定;如上面的 CITY char(1024)

二、excel编写sql格式:
* select SGSN_ID,RNC_ID,LAC,CI, CITY_ID, CITY from [s_site$]
* 表名采用sheel页的名称+$,格式[s_site$]
* 如果列头中有非法字符,则用[]包起来查询;如:select LAC,CI, CITY_ID, [LAST NAME] from [s_site$]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: