2013年(350)
分类: Oracle
2013-04-10 11:24:24
如果碰到的是这个问题,我首先想说的是,你运气不错!众所周知,.xls文件单个Sheet 最大行数不超过65536行,这起码说明你将要处理的数据量不大。
一般处理E xcel 数据,最常用的方式是将其保存为CSV(Comma Separated Values ,逗号分隔值)格式文件,单击“文件”→“另存为”命令,在“保存类型”下拉列表框中选择CSV,如图5-1所示。
图5-1 “另存为”对话框
然后,即可按照5.1节中演示的方式执行导入。
有两种方式可以参考:
1 )修改数据文件,将分隔符替换为逗号。
2 )修改控制文件,将FIELDS TERMINATED BY的值修改为实际的分隔符。
例如,要向scott.bonus表插入数据(另注:在本章示例中如无特别说明,均以操作bonus表中数据为例),提供的数据格式如下(仅做示例,我就不弄太多数据了):
SMITH,CLEAK,3904
ALLEN,"SALER,M",2891
WARD,"SALER,""S""",3128
KING,PRESIDENT,2523示例保存为数据文件ldr_case2.dat。
修改控制文件,注意下列示例代码中的粗体字符,OPTIONALLY ENCLOSED BY参数指明定界符(专业词汇哟)为双引号(CSV格式文件默认定界符就是双引号,你可以根据实际情况修改OPTIONALLY的参数值),如下所示:
LOAD DATA
INFILE ldr_case2.dat
TRUNCATE INTO TABLE BONUS
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY ' " '
(ENAME,JOB,SAL)示例代码保存为控制文件ldr_case2.ctl。
运行SQLLDR:
F:\oracle\script> SQLLDR SCOTT/TIGER CONTROL=LDR_CASE2.CTL
SQL*Loader: Release 10.2.0.1.0 - Production on Tue Mar 17 14:25:21 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
Commit point reached - logical record count 3
Commit point reached - logical record count 4查询结果如下:
SQL> SELECT * FROM BONUS;
ENAME JOB SAL COMM
---------- -------------------- ---------- ----------
SMITH CLEAK 3904
ALLEN SALER,M 2891
WARD SALER,"S" 3128
KING PRESIDENT 2523是你想要的结果吗?
例如:提供数据文件中的数据都是以下的格式:
SMITH CLEAK 3904
ALLEN SALESMAN 2891
WARD SALESMAN 3128
KING PRESIDENT 2523示例代码保存为数据文件ldr_case3.dat。
按照专业的叫法,这是定长字符串,不要紧的,SQLLDR中处理定长字符串也轻而易举。针对此例,我们将控制文件修改如下:
LOAD DATA
INFILE ldr_case3.dat
TRUNCATE INTO TABLE BONUS
(
ENAME position(1:5),
JOB position(7:15),
SAL position(17:20)
)示例代码保存为控制文件ldr_case3.ctl。
position关键字用来指定列的开始和结束位置,如 JOB position (7:15)是指从第7个字符开始截止到第15个字符作为ENAME列的列值。position的写法也很灵活,要实现上述功能还可以换成下列几种形式:
执行 SQLLDR 命令:
F:\oracle\script> SQLLDR SCOTT/TIGER CONTROL=LDR_CASE3.CTL
SQL*Loader: Release 10.2.0.1.0 - Production on 星期三 3月 11 16:56:20 2009
Copyright (c) 1982, 2007, Oracle. All rights reserved.
达到提交点 - 逻辑记录计数 3
达到提交点 - 逻辑记录计数 4SQL*Plus 中查看导入结果:
SQL> SELECT * FROM BONUS;
ENAME JOB SAL COMM
---------- --------- ---------- ----------
SMITH CLEAK 3904
ALLEN SALESMAN 2891
WARD SALESMAN 3128
KING PRESIDENT 2523
=================================================
全书目录:http://space.itpub.net/7607759/viewspace-622699
样书预览:http://space.itpub.net/7607759/viewspace-622515
马上购买: