如何将Excel导入oracle导入数据库数据库

您所在的位置: &
Oracle中Excel数据导入
Oracle中Excel数据导入
本文主要讲述的是用SQL*Loader把Excel数据导出到Oracle中,实现在Oracle数据库里,插入excel文件里的相关数据的具体操作步骤。
以下的文章主要是向你介绍如何用SQL*Loader把Excel数据导出到Oracle中,来实现在数据库里,插入excel文件里的相关数据 ,如果你对其相关的实际操作有兴趣了解的话,以下的文章将会给你提供相关的知识。
实现步骤:
1、打开MicroSoft Excel 2000
2、文件(F)&新建(N)&工作簿&
3、输入数据后,存盘为test.xls,
4、文件(F)&另存为(A)&
保存类型为:制表符分隔,起名为text.txt,保存到C:
5、须先创建表结构:
连入SQL*Plus,以system/manager用户登录,
SQL>&conn&system/manager&&
创建表结构
SQL>&create&table&test& &( &id number,--序号 &usernamevarchar2(10),--用户名& &passwordvarchar2(10),--密码& &sj varchar2(20) &--建立日期& &);&
6、在实现SQL*Loader将Excel数据导出到Oracle数据库中,要创建SQL*Loader输入数据所需要的文件,均保存到C:,用记事本编辑:
控制文件:input.ctl,内容如下:
load data --1、控制文件标识 infile 'test.txt' --2、要输入的数据文件名为test.txtappend into table test--3、向表test中追加记录
fields terminated by X'09'--4、字段终止于X'09',是一个制表符(TAB)
(id,username,password,sj) -----定义列对应顺序
a、insert,为缺省方式,在数据装载开始时要求表为空
b、append,在表中追加新记录
c、replace,删除旧记录,替换成新装载的记录
d、truncate,同上
7、在DOS窗口下使用SQL*Loader将Excel数据导出到Oracle数据库中SQL*Loader命令实现数据的输入
C:>sqlldr userid=system/manager control=input.ctl
默认日志文件名为:input.log
默认坏记录文件为:input.bad
如果是远程对数据库进行导入操作,则输入字符串应改为:
C:>sqlldr userid=system/manager@serviceName_192.168.1.248 control=input.ctl
8、连接到SQL*Plus中,查看是否成功输入,可比较input.log与原test.xls文件,查看数据是否全部导入,是否导入成功.
【编辑推荐】
【责任编辑: TEL:(010)】
关于的更多文章
Oracle是一个面向Internet计算环境的数据库。它是在数据库领域一
数据库产品
数据库综合
数据库新闻
维基百科将切换到另外一款开源数据库MariaDB
本专题将带领大家走入MongoDB的世界,了解MongoDB是怎
SQL Server 2008提供了全民啊行的空间支持,但同时空
你的SQL Server代码安全吗?请你与我一起跟随作者来探
本书以一个模拟局域网组建为思路,介绍了与局域网组建各主要方面相关的知识及组建、配置方法。本书所介绍的内容主要包括:局域网
51CTO旗下网站利用plsql将Excel中的数据导入到oracle数据库的数据表中
打开plsql的odbc导入其
路径:工具/ODBC导入器
点击连接按钮,然后选择要导入的exce
选择excel的sheet
选择数据库用户和数据表
选择数据表中对应的字段,并选择类型(类型一定要对应上,否则不能导入
6、完成字段的对应和类型匹配后点击导入按钮,即可将数据导入到数据表中
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。4153人阅读
今天客户突然要修改大量的数据,不得已之下只好看看如何将excel中的数据导入到oracle中,现将步骤简要记录如下(参考了网上的有关文章):
1.准备数据:在excel中构造出需要的数据
2.将excel中的数据另存为文本文件(有制表符分隔的)
3.将新保存到文本文件中的数据导入到pl*sql中
& & & 在pl*sql中选择tools--&text importer,在出现的窗口中选择&Data from Textfile&,然后再选择&Open data file&,
& &&在弹出的文件选择框中选中保存有数据的文本文件,此时将会看到data from textfile中显示将要导入的数据
4.在configuration中进行如下配置
注:如果不将&Name in header&勾选上会导致字段名也当做记录被导入到数据库中,从而导致数据错误
5.点击data to oracle,选择将要导入数据的表,并在fields中将文本中的字段与表中的字段进行关联
6.点击import按钮进行导入
7.查看导入的数据
OK,至此数据导入成功。
版权声明:本文为博主原创文章,未经博主允许不得转载。
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:235954次
积分:2861
积分:2861
排名:第6179名
原创:53篇
转载:25篇
评论:105条
(1)(1)(1)(1)(3)(1)(1)(1)(2)(1)(7)(3)(2)(17)(5)(5)(9)(7)(3)(6)(1)当前访客身份:游客 [
当前位置:
发布于 日 17时,
一个读取Excel中在值,然后将Excel的值插入到MySql库中。
代码片段(1)
1.&[代码][Java]代码&&&&
一个读取Excel中在值,然后将Excel的值插入到MySql库中。
import java.io.FileInputS
import java.io.InputS
import java.util.ArrayL
import java.util.L
import jxl.C
import jxl.S
import jxl.W
public class CopyOfReadData {
@SuppressWarnings("unchecked")
public void createData(String path,String sheetname){
String sourcefile =
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
String preheader = "";
List&String& fieldsList = new ArrayList&String&();
List dataList = new ArrayList();
for(int i = 0;i&i++){
Cell[] testcell
= sheet.getRow(i);
if(testcell.length == 0)
if(!header.equals(preheader)){
fieldsList.clear();
preheader =
String tempString
= testcell[0].getContents();
int datatype = tempString.indexOf("&&");
if(datatype != -1 )
System.out.println("第"+i+"行------");
//get cells of row
for (int j = 0; j & testcell. j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
int coment = str1.indexOf("$$");
//int datatype = str1.indexOf("&&");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
dataList.add(str1);
if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
deleteData(header,dataList);
System.out.println("成功删除");
inserData(header,fieldsList,dataList);
System.out.println("成功插入");
dataList.clear();
} catch (Exception ex) {
ex.printStackTrace();
public void deleteDataByid(String path,String sheetname){
String sourcefile =
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
String preheader = "";
List&String& fieldsList = new ArrayList&String&();
List dataList = new ArrayList();
for(int i = 0;i&i++){
Cell[] testcell
= sheet.getRow(i);
if(testcell.length == 0)
if(!header.equals(preheader)){
fieldsList.clear();
preheader =
String tempString
= testcell[0].getContents();
int datatype = tempString.indexOf("&&");
if(datatype != -1 )
System.out.println("第"+i+"行------");
//get cells of row
for (int j = 0; j & testcell. j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
int coment = str1.indexOf("$$");
//int datatype = str1.indexOf("&&");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
dataList.add(str1);
if(!header.equals("") && fieldsList.size() != 0 && dataList.size() != 0 ){
deleteData(header,dataList);
System.out.println("成功删除");
inserData(header,fieldsList,dataList);
System.out.println("成功插入");
dataList.clear();
} catch (Exception ex) {
ex.printStackTrace();
public void deleteData(String header,List dataList){
String sql = "delete from "+header + " where 1=1 and id = "+dataList.get(0);
excute(sql);
} catch (Exception ex) {
ex.printStackTrace();
public int inserData(String header,List&String& fieldsList,List&String& dataList){
StringBuffer sql = new StringBuffer("insert into ");
sql.append(header+" (");
for(int i = 0; i&fieldsList.size();i++){
sql.append(fieldsList.get(i)+",");
sql.delete(sql.length()-1, sql.length());
sql.append(") values(");
for(int i = 0; i&dataList.size();i++){
sql.append("'"+dataList.get(i)+"',");
sql.delete(sql.length()-1, sql.length());
sql.append(")");
excute(sql.toString());
private void excute(String sql){
//载入Oracle驱动程序
//Class.forName("oracle.jdbc.OracleDriver").newInstance();
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException ex) {
ex.printStackTrace();
System.out.println("载入MySQL数据库驱动时出错");
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
System.out.println("载入MySQL数据库驱动时出错");
} catch (IllegalAccessException ex) {
ex.printStackTrace();
System.out.println("载入MySQL数据库驱动时出错");
/////////////////////////////////////////////////////////////////////////
//连接到Oracle数据库
java.sql.Connection conn =
//连接Oracle数据库
conn = java.sql.DriverManager.getConnection(
"jdbc:oracle:thin:@192.168.1.2:1521:dbname", "username", "password");
//连接Mysql库
conn = java.sql.DriverManager.getConnection(
"jdbc:mysql://localhost/cookbook", "root", "");
} catch (Exception ex){
ex.printStackTrace();
System.out.println("连接到MySQL数据库时出错!");
System.exit(0);
////////////////////////////////////////////////////////////////////////
//得到MySQL操作流
System.out.println("-----------------
java.sql.PreparedStatement stat = conn.prepareStatement(sql);
boolean rs = stat.execute();
} catch(Exception ex) {
ex.printStackTrace();
System.exit(0);
//关半程序所占用的资源
conn.close();
}catch(Exception ex){
ex.printStackTrace();
System.out.println("关闭程序所占用的资源时出错");
System.exit(0);
public List&String& getData(String path,String sheetname){
List&String& dataList = new ArrayList();
String sourcefile =
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
String header = "";
List&String& fieldsList = new ArrayList&String&();
for(int i = 0;i&i++){
Cell[] testcell
= sheet.getRow(i);
//get cells of row
for (int j = 0; j & testcell. j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int fields = str1.indexOf("#");
int cheader = str1.indexOf("**");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
}else if(fields != -1){
fieldsList.add(str1.substring(fields+1, length));
dataList.add(str1);
} catch (Exception ex) {
ex.printStackTrace();
return dataL
public void deleteData(String path,String sheetname){
String sourcefile =
InputStream is = new FileInputStream(sourcefile);
Workbook rwb = Workbook.getWorkbook(is);
//get sheet
Sheet sheet = rwb.getSheet(sheetname);
//System.out.println(sheet.getName());
//get rows
int cr =sheet.getRows();
for(int i = 0;i&i++){
String header = "";
Cell[] testcell
= sheet.getRow(i);
//get cells of row
for (int j = 0; j & testcell. j++) {
String str1 = testcell[j].getContents();
if(str1 != null && !"".equals(str1)){
int cheader = str1.indexOf("**");
int length = str1.length();
//get table name
if(cheader != -1){
header = str1.substring(cheader+2, length);
String sql = "delete from "+
excute(sql);
} catch (Exception ex) {
ex.printStackTrace();
public class CopyOfDataIndert {
* @param args
public static void main(String[] args) {
CopyOfReadData readData = new CopyOfReadData();
//造数据----------------------------------------------------------
String path = "E:/09.testdata/xxx.xls";
readData.createData(path, "yxl");
//删除数据
readData.deleteDataByid(path, "md_data");
readData.deleteData(path, "delete_data");
开源中国-程序员在线工具:
相关的代码(47)
14回/26287阅
11回/17744阅
1回/8176阅
10回/7830阅
40回/7269阅
8回/7198阅
[ASP/Basic]
0回/6858阅
12回/6268阅
4回/5552阅
10回/5232阅
请问支持excel2007么
2楼:JacarriChan 发表于
好似文件流没有关闭
3楼:罪恶的花生 发表于
建议使用poi,这个会内存溢出的~
4楼:Sky__ 发表于
jxl已经停止开发了, 不支持2007以上的excel, &最好用 poi, 不过,你只是用来获取数据导入的话, 没有其它特别的要求, 可以用jxl.
5楼:快慢机 发表于
引用来自“high-sky”的评论jxl已经停止开发了, 不支持2007以上的excel, &最好用 poi, 不过,你只是用来获取数据导入的话, 没有其它特别的要求, 可以用jxl.请问除了POI还有什么好的第三方jar支持操作excel吗?POI不支持07的chart图操作
6楼:Sky__ 发表于
引用来自“快慢机”的评论引用来自“high-sky”的评论jxl已经停止开发了, 不支持2007以上的excel, &最好用 poi, 不过,你只是用来获取数据导入的话, 没有其它特别的要求, 可以用jxl.请问除了POI还有什么好的第三方jar支持操作excel吗?POI不支持07的chart图操作这个不清楚哦.可以问问其它的大神.呵呵
7楼:王振博 发表于
引用来自“快慢机”的评论引用来自“high-sky”的评论jxl已经停止开发了, 不支持2007以上的excel, &最好用 poi, 不过,你只是用来获取数据导入的话, 没有其它特别的要求, 可以用jxl.请问除了POI还有什么好的第三方jar支持操作excel吗?POI不支持07的chart图操作额 这个没试过,也是刚刚上班碰到的,就研究了一下……
8楼:sybell 发表于
请问一下,这个程序中哪部分会导致内在溢出的?
开源从代码分享开始
王振博的其他代码

我要回帖

更多关于 oracle导入数据库 的文章

 

随机推荐