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$]
客户提供一个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$]
相关文章推荐
- Oracle--单行函数(字符函数、数字函数、日期函数、转换函数、通用函数)
- 怎样让oracle实验本在不做实验时性能提升——win7下举例
- oracle数据库乱码
- Oracle跨表空间导出导入数据
- Oracle 创建普通用户,并赋予权限
- oracle学习 第一章 简单的查询语句 ——03
- 分页数据有重复的问题
- 往Oracle数据库中插入日期型数据(to_date的用法)
- oracle学习 第一章 简单的查询语句 ——02
- 6、索引与索引组织表
- Oracle ,My SQL 与SQL Server的区别
- dual表
- oracle11g数据库安装和配置
- oracle operator:Quote&Escape
- 測试oracle 11g cluster 中OLR的重要性
- plqsl中创建用户
- oracle自动生成主键不连续
- csv导入oracle数据库
- oracle学习之二:oracle常用命令
- oracle学习之一:Oracle的安装与卸载