乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > 如何将一条<em>excel</em>数据导入到<em>plsql</em&g

如何将一条<em>excel</em>数据导入到<em>plsql</em&g

作者:乔山办公网日期:

返回目录:excel表格制作


可以试试~
方法一:最省时的方法,需要借助plsql dev工具。
a.复制整个工作簿中的数据到某个表中。
点击excel工作区左上角,全部选中数据,ctrl+c 复制整个工作簿中的数据。在plsql dev中,编辑表格表的数据,点击数据展示区左上角,直接粘贴就可以了(注意excel的第一列应该保持为空,如果不为空可以增加一空列,不然你复制的数据就会少一列的)!如下图
所示:
容易出现:ora-01400:cannot insert null into
百度思路:解决思路是在导入之前先创建那张表,且将报错的字段去掉not null 约束,再导入,导入之后找到那个为null的数据,要么delete要么update,再把not null约束加上去,OK。
实际解决方法:重启plsql,再操作一次-------------------------不一定成功!

b.复制某列的数据。
这个很容易,选中excel某一列的数据,复制,选中oracle某个表的某一列,直接粘贴就可以了。plsql dev和excel中的列可以相互复制。

方法二:最专业的方法,用sql loader。

原文地址:http://daniel-wuz.javaeye.com/blog/198112

1.录入excel 测试表格,test.xls。
2.另存为.csv格式
3.创建sql*loader控制文件test.ctl,内容如下:
Load data
Infile 'c:/test.csv'
insert Into table test Fields terminated by','(column1,column2,column3,column4,column5)

需要将数据文件拷贝到对应位置

4.到数据库中建立对应的测试表test

create table test (
column1 Varchar2(10),
column2 Varchar2(10),
column3 Varchar2(10),
column4 Varchar2(10),
column5 Varchar2(10)
)

5.执行导入命令
Sqlldr userid = system/manager control='C:/test.ctl'

导入成功!

附:
Sqlldr的函数关键字说明:
Userid --oracle用户名 userid = username/password
Control --控制文件名称 control =‘e:/insert.ctl’
Log –-日志文件名称 log = ‘e:/insert.log’
Bad --损坏文件名称
Data --data file name
Discard --discard file name
Discardmax --number of discards to allow(默认全部)
Skip --导入时跳过的记录行数(默认0)
Load --导入时导入的记录行数(默认全部)
Errors --允许错误的记录行数(默认50)

ctl文件内容说明:
Load data
Infile ‘e:/test.csv’ --数据源文件名称
Append|insert|replace --append在表后追加,insert插入空表,replace替代原有内容
Into table test --要导入的数据库表名称
[when id = id_memo] --过滤条件
Fields terminated by X’09’ --字段分隔符
(id,name,telphone) --字段名称列表

方法三:最悲剧的方法,创建oracle外部表,为了把excel中的数据导入到数据中而去建立外部表,大题小做了!
将excel文件另e68a84e8a2ad7a64366存为csv文件a.csv,然后创建一个外部表t,数据指向a.csv。然后根据外部表创建一个普通的表:
create table a asselect * from t ,这样就可以把最初的excel文件导入到oracle中的表了。

方法四:最古典的方法,拼接sql语句。如果你excel熟的话,这种方法也不错。
在excel中,把数据拼接成如下sql语句:
insert into empvalues('1','2','3');
insert into empvalues('4','5','6');
insert into empvalues('7','8','9');

具体的导入操作如下: 1、点击“工具”—“ODBC导入器…”菜单,打开导入功能。 2、 选择要连接类型和导入的Excel文件 3、 选择所要导入数据所在的“Sheet”表 4、 根据Sheet表结构创建Oracle数据表 5、 完成数据导入
方法一、使用SQL*Loader
这个是用的较多的方法,前提必须Oracle数据中目的表已经存在。大体步骤如下:
1、将excel文件另存为一个新文件比如文件名为text.txt,文件类型选文本文件(制表符分隔),这里选择类型为csv(逗号分隔)也行,但是在写后面的control.ctl时要将字段终止符改为','(fields terminated by ','),假设保存到c盘根目录。
2 、如果没有存在的表结构,则创建,假设表为test,有两列为dm,ms。
3、用记事本创建SQL*Loader控制文件,网上说的文件名后缀为ctl,其实我自己发现就用txt后缀也行。比如命名为control.ctl,内容如下:(--后面的为注释,实际不需要)
load data --控制文件标识
infile 'c:/text.txt' --要输入的数据文件名为test.txt
append into table test --向表test中追加记录
fields terminated by X'09' --字段终止于X'09',是一个制表符(TAB)
(dm,ms) --定义列对应顺序
备注:数据导入的方式上例中用的append,有一下几种:insert,为缺省方式,在数据装载开始时要求表为空;append,在表中追加新记录;replace,删除旧记录,替换成新装载的记录;truncate,同replace。
4、在命令行提示符下使用SQL*Loader命令实现数据的输入。
sqlldr userid=system/manager control='c:/control.ctl'
我来举个例子

1.导出地区表的test.csv文件
"01","市区"
"02","柯桥"
"03","钱清"
"04","皋埠"
"05","漓渚"
"06","齐贤"
"08","袍江"
"09","平水"
"12","东浦"
....
2.编辑sqlldr导出控制文件test.ctl内容如下:
load data
infile 'e:/test.csv'
replace into table test
fields terminated by ',' optionally enclosed by '"'
trailing nullcols
(id,name)

3.在cmd中执行:
E:/>sqlldr userid=xxx/yyy@dbxx control=e:/test.ctl log=e:/log.txt bad=e:/bad.txt
SQL*Loader: Release 8.1.7.0.0 - Production on 星期三 7月 20 21:28:06 2005
(c) Copyright 2000 oracle Corporation. All rights reserved.
达到提交点,逻辑记录计数48

方法二、 利用PLSQL Developer

使用PLSQL Developer工具,这个可是大名鼎鼎的Oracle DBA最常使用的工具。
在单个文件不大的情况下(少于100000行),并且目的表结构已经存在的情况下——对于excel而言肯定不会超过了,因为excel文件的最大行为65536—— 可以全选数据COPY ,然后用PLSQL Developer工具。
1 在PLSQL Developer的sql window里输入select * from test for update;
2 按F8执行
3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后COMMIT提交即可。
还有很多第三方工具,Toad,PL/SQL Developer,SQL Navigator等等。

方法三 、使用其它数据转移工具作中转站。

我使用的是Sql Server 2000。
先将excel表导入sqlserver数据库中,然后再从Sql server导入到oracle中。这两部操作都简单,如果不会随便查个帮助就可以了。
这里有两个自己的经验:
一、是注意excel文件的版本和格式要与7a64e4b893e5b19e338导入到sql server时的数据源匹配。如果导入到sql server时的数据源选Microsoft Excel 97-2000的话,而excel文件的版本为Micaosoft Excel 5.0/95 工作簿,则有可能出问题。关于如何看Excle文件格式,你打开excel文件,选择另存为,即可看到像Micaosoft Excel 5.0/95 工作簿或者是Microsoft Office Excle 工作簿等等其它的保存类型。
二、就是由Sqlserver导入到oracle中时,记得将在oracle中的表名全部用大写。因为oracle的表名都是大写的,而sql的表可能是大小混写的,所以导入后在oracle里查不到该表,比如这个Products表在oracle里查询就应该写成select * from scott."Products";
https://jingyan.baidu.com/article/6dad5075ce7261a123e36e0d.html

导入后再修改就行了,或者先导入到其他表里面,然后使用insert into select 的方式插入到这个表中。
自增长的就在select语句中添加rownum虚拟列就行。
非null字段,如果excel中的数据没有,那就没办法zd了,只能将这个表的字段改为可以存放null值。

相关阅读

  • <em>plsql</em> 怎么把<em>excel</em> 文件导

  • 乔山办公网excel表格制作
  • 客户端装的是10吗?_home设定了没有?注意大小写哦,toad能用吗,如果plsql能用应该还是excel连接的问题,plsql的ODBC导入器中的用户系统选项没有值了,是怎么..." src="/uploads/tu/490.jpg" style="width:
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网