卢布(大庆油田第一采油厂第三油矿,黑龙江大庆163001)
摘要:本文讨论了Oracle数据库中加载外部数据的方法,提出了一种在WEB环境下将MicrosoftExcel电子表格数据加载到Oracle数据库的方法。
关键词:Oracle数据导入;WEB;MicrosoftExcel
1Oracle数据加载方法
所谓数据加载,就是将外部数据、或其他数据库的数据经过转换并输入到Oracle数据库中。例如,可以将MicrosoftExcel或Foxbase的数据加载到Oracle数据库。
Oracle提供了数据加载工具SQL*LOADER,此工具可以把外部文件中的数据加载到Oracle数据库中。要使用SQL*LOADER,必须编辑一个控制文件(.CTL)、及一个数据文件(.DAT),通过规定的分隔符来区分不同字段的数据,将不同分割符的数据插入到基表中相应字段中。这种方法针对有一定数据库知识的用户比较容易掌握,但针对普通用户则不太适用。在B/S软件大肆风行的时代,用户从浏览器上均能获得以往在本机软件上才能获得的用户体验。自然在WEB上实现从EXCEL向Oracle的数据导入就显得十分必要了。
2WEB方式数据导入原理
WEB方式不同于客户端工具的数据导入,它没有本地程序,更不能从本地获取文件的数据流,这是由WEB浏览器和服务器之间的安全机制所决定的。如果想要实现从本地文件的数据导入就必须突破本地文件和服务器之间传输的限制。这里我们同过应用程序网站的设置完全可以实现这个功能。
首先,在搭建应用程序服务器时,我们要在网站根目录下建立一个文件夹作为用户传输EXCEL文件的空间。然后,在文件夹的属性上进行设置,将其权限设置为针对WEB浏览匿名用户的可写权限,或者针对不同的权限要求进行设置。这样就解决了用户向服务器进行文件传输的限制。
解决的文件传输的问题,我们就要了解一下EXCEL向ORACLE数据导入的原理。主要原理是将EXCEL文件作为一个数据源读入DATASET,对数据源上的数据进行读取操作,读取完毕后用SQL语句的插入语句向ORACLE数据库进行数据写入。具体实现方法我们以C#为例:
//将EXCEL表数据读入DataSet
path=LB_path.Text.ToString();
stringstrCon="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+
path+";ExtendedProperties=Excel8.0";
OleDbConnectionolecon=newOleDbConnection(strCon);
OleDbDataReaderoradr;
OleDbCommandolecmd;
stringstrCom="select*from["+DDL_Sheet.SelectedValue.ToString()+"]wherecodeisnotnullorderbycode";
olecmd=newOleDbCommand(strCom,olecon);
olecon.Open();
oradr=olecmd.ExecuteReader();
//将DataSet中数据导入数据库StringBuilder
myConnString=System.Configuration.ConfigurationManager.ConnectionStrings["Conn"].ToString();
OracleConnectionobjConn=newOracleConnection(myConnString);
objConn.Open();
OracleTransactionyutrans=objConn.BeginTransaction();
intinsertRowCount=0;
try
{OracleCommandinsCommand=newOracleCommand();
insCommand.Connection=objConn;
insCommand.Transaction=yutrans;
while(oradr.Read())
{code=oradr["code"].ToString().Trim();
//插入记录insert:
insertRowCount++;
StringBuildersbExcel=newStringBuilder("");
sbExcel.Append("INSERTINTOA(cod)");
sbExcel.Append("VALUES('");
sbExcel.Append(code);
sbExcel.Append("')");
insCommand.CommandText=sbExcel.ToString();
insCommand.ExecuteNonQuery();}
yutrans.Commit();
if(objConn.State.ToString().Equals("Open"))objConn.Close();
if(olecon.State.ToString().Equals("Open"))olecon.Close();
LB_message.Visible=true;
LB_message.Text="库存数据导入成功!";}
3结论
以WEB方式将EXCEL数据向Oracle数据导入,可避免以往客户端导入软件设置复杂、不容易掌握等问题,给用户带来全新的体验,并且适用于目前广泛流行的WEB应用程序设计结构,有一定的借鉴意义。
参考文献
[1]萨师煊,王珊.数据库设计理论和实践[M]//计算机应用与软件.北京:高等教育出版社,1984.
[2]赵松涛.中文版SQLServer2000应用及实例集锦[M].北京:北京人民邮电出版社,2002.
[3]吉根林,崔海源.WEB程序设计[M].北京:电子工业出版社,2002.