excel表导入oracle数据库的方法,这些方法也可以用于将其它格式的数据导入到oracle中,这里只是以excel为例。oracle9i以上。 21村落‑i3?:L L4s9U#[z:u,U‑l
方法一,使用SQL*Loader
T5s[1]]9@0C[1]|T0 这个是用的较多的方法,前提必须oracle数据中目的表已经存在。
z-{^"~z|"U0 大体步骤如下:
p4VTK-`"_ CA f/$@0 1 将excle文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的control.ctl时要将字段终止符改为','(fields terminated by ','),假设保存到c盘根目录。
)Uj aj[1]`0 2 如果没有存在的表结构,则创建,假设表为test,有两列为dm,ms。
7u!},j,][1]aGtF0 3 用记事本创建SQL*Loader控制文件,网上说的文件名后缀为ctl,其实我自己发现就用txt后缀也行。比如命名为control.ctl,内容如下:(--后面的为注释,实际不需要) 21村落
V5/A"y$/
,w/.~c!ACy0 load data --控制文件标识 21村落8H[(D8?qG p T y
infile 'c:/text.txt' --要输入的数据文件名为test.txt 21村落MB [7H W"Umt!kp^
append into table test --向表test中追加记录
"c1I B M T)m0 fields terminated by X'09' --字段终止于X'09',是一个制表符(TAB)
%}&~.f%Q"m@'K"]2bMB0 (dm,ms) --定义列对应顺序
yt`#Fn {.sc D0 备注:数据导入的方式上例中用的append,有一下几种:insert,为缺省方式,在数据装载开始时要求表为空;append,在表中追加新记录;replace,删除旧记录,替换成新装载的记录
7Ht!^ /;ArK^[1]B G0 ;truncate,同replace。 21村落N.u h[1]by$w$P)z
4 在命令行提示符下使用SQL*Loader命令实现数据的输入
XF:S1IQ0
7]5P Y;s.QJ8b0 sqlldr userid=system/manager control='c:/control.ctl' 21村落%Hw6N%d t"Ts1F/` |
1t V]GWV7A T pS0 更详细的介绍请查看http://www-rohan.sdsu.edu/doc/oracle/server803/A54652_01/ch04.htm#793 21村落B%a`X"a GJi}
21村落A3HM
zsy
方法二 利用PLSQL Developer 21村落*O[#_‑RbQ
使用PLSQL Developer工具,DBA最常使用的工具。
H*H T;]![a$OU_0 在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536—— 可以全选数据复制,然后用PLSQL Developer工具。
a!sxe0g0SQ[1]h5JT0 1 在PLSQL Developer的sql window里输入select * from test for update; 21村落%X g;U‑/"P
2 按F8执行
Q%g-aM"G;CQ Q0 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。
7q$F6i-O/F0 方法三 使用其它数据转移工具作中转站。 21村落 VvA ?K,I
使用的是MS Sql Server 。
N(d#D p_l A%g9A'y0 先将excel表导入sqlserver数据库中,然后再从sql server导入到oracle中。这两部操作都简单。 21村落 |"|CH!h"G
这里有两个自己的经验:
7HN:JM6{
{7x0 二就是由 sql server 导入到 oracle 中时,记得将在 oracle 中的表名全部用大写。这条经验是花了好些时间才换来的。刚开始导时,由于由 excle 导入 sql server 的表名为小写,然后倒到 oracle 中默认的也是小写,结果出现了一些很奇怪的情况,一个就是在 Enterprise Manager Console 中,在所有表的列表里面可以看到倒入的表,并且利用表数据编辑器还可以看到导入好的数据,但是在具体的表空间下确连表也看不到,实在是奇怪,我老是在想那表到底跑哪去了;二就是不管在具体表空间下看不看得到,表数据总是可以看到的,但是在 Sql*Plus 或者利用 PLSQL Developer 的 Sql Window ,写 select 语句查看数据,总是提示错误: Ora-00942 :表或视图不存在。解决方法,由 sql server 导入 oracle 时将表名改为全部大写(部分大写都不行),导入后不论 Sql*Plus 或者 PLSQL Developer 的 Sql Window 里写 select 语句(里面的表名用大写或者小写都行),都能正确的取出记录。很奇怪的问题,作为经验,如果哪位大侠有高见,请不吝赐教 簿,则有可能出问题。关于如何看