SQL 将txt导入sql数据库.docx_第1页
SQL 将txt导入sql数据库.docx_第2页
SQL 将txt导入sql数据库.docx_第3页
SQL 将txt导入sql数据库.docx_第4页
SQL 将txt导入sql数据库.docx_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

就一句sql代码搞定,导入sql2000的代码。BULK INSERT表名FROM F:你的文本文件.txt WITH ( FIELDTERMINATOR =以什么符号分割数据, ROWTERMINATOR= 以什么符号加n结尾)-n是回车的意思,就是回车前面是什么符号,如果没符号直接单引号n例如:BULK INSERT bb FROM F:2008-02-18.txt WITH ( FIELDTERMINATOR =, ROWTERMINATOR= ,n)bb是表名,f盘中的F:2008-02-18.txt文件, FIELDTERMINATOR =,每个数据是以逗号分隔的,ROWTERMINATOR= ,n每行数据以逗号回车结尾。我导入过很多次。使用BULK INSERT用法如下:stu.txt结构1,Jim2,Kate3,Tom.BULK INSERT dbo.TABLE1FROM d:stu.txtWITH ( FIELDTERMINATOR = , ROWTERMINATOR = n)查看table1里的数据select * from table1就ok了。在做一些web数据库管理系统的时候经常要实现将帐户批量注册的功能,今天就来讲讲如何在C#-web项目中将txt文件和excel文件导入SQL2000数据库。1.数据库准备在SQL2000数据库的实例数据库pubs中建立一个数据表txtInsert,字段很简单:id,name两个。2.txt文本文件导入对于数据文件导入与导出SQL2000提供了BULK INSERT和BCP语句,在这里可以使用BULK INSERT命令实现。假设在c盘上有一个文本文件stu.txt内容为: 1,tom 2,jack 3,jhon .实现导入的C#代码如下:protected System.Web.UI.HtmlControls.HtmlInputFile fName;protected System.Web.UI.WebControls.Button BtnInsert;/上面两个控件自己添加代码privatevoidBtnInsert_Click(objectsender,System.EventArgse)stringfPath=this.fName.PostedFile.FileName;/获得要导入的文本文件stringextName=fPath.Substring(fPath.LastIndexOf(.)+1);/获得文件的扩展名SqlConnectioncon=newSqlConnection(server=.;database=pubs;uid=sa;pwd=;);/数据库连接对象con.Open();trySqlCommandcom=newSqlCommand(BULKINSERTpubs.dbo.txtInsertFROM+fPath+WITH(FIELDTERMINATOR=,ROWTERMINATOR=n),con);/其中的FIELDTERMINATOR=,指明字段间所使用的分隔符为逗号/其中ROWTERMINATOR=n指明记录间所使用的分隔符为回车com.ExecuteNonQuery();Response.Write(scriptlanguage=javascript>alert(数据导入成功!);catch(SqlExceptionSQLexc)Response.Write(导入数据库时出错:+SQLexc.ToString();con.Close();好了,这个txt文件的导入相对简单,在数据库中我也没有设置主键,我在里面也没有加出错回滚事务操作,在下面的excel文件的导入中介绍。3.excel文件的导入在c盘里建立一个stu.xls文件,在sheet1工作表中有两列数据如下:编号姓名 1 tom 2 jack 3 john .注意,工作表的第一行是作为标题行的不会被插入到数据库中,真正导入从第二行开始。为了演示事物出错回滚,在这里将txtInsert数据库表中的id字段设置为主键。实现的C#代码如下:代码privatevoidBtnInsert_Click(objectsender,System.EventArgse)stringfPath=this.fName.PostedFile.FileName;/获得要导入的文本文件stringextName=fPath.Substring(fPath.LastIndexOf(.)+1);/获得文件的扩展名SqlConnectioncon=newSqlConnection(server=.;database=pubs;uid=sa;pwd=;);/数据库连接对象con.Open();/注意下面的连接字符串,是它起到了导入的作用SqlCommandexcelCmd=newSqlCommand(insertintotxtInsertselect*fromOPENROWSET(MICROSOFT.JET.OLEDB.4.0,Excel5.0;HDR=YES;DATABASE=+fPath+,Sheet1$),con);SqlTransactionmyTran=con.BeginTransaction();/开始一个事务操作excelCmd.Transaction=myTran;tryexcelCmd.ExecuteNonQuery();myTran.Commit();/提交事务Response.Write(scriptlanguage=javascript>alert(数据导入成功!);catch(SqlExceptionerr)myTran.Rollback();/出错回滚事务操作/以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符,否则在使用时javascript代码将有语法错误/因为js的编码和c#的编码不同stringerrString=err.Message.Replace(,);errString=errString.Replace(Convert.ToChar(13).ToString(),);errString=errString.Replace(Convert.ToChar(10).ToString(),);/显示出错信息框Response.Write(scriptlanguage=javascript>alert(导入数据库时出错!详细信息:+errString+);con.Close();这里“显示出错信息框”开始我没有田间那三行代码,结果搞了半天,最后还是在html文件中发现javascript代码部分出现了分行,老是提示“未结束的字符串常量”,所以导致不能打开信息框,郁闷死我了,花了好多时间。4.将excel中部分列导入数据库的方法上面讲了关于将整个excel文件导入数据库的方法,那么在实际项目中遇到将excel文件中若干列导入数据库怎么办的呢,原理差不多,我就将代码直接给出了:代码stringfPath=this.fName.PostedFile.FileName;/获得要导入的文本文件stringextName=fPath.Substring(fPath.LastIndexOf(.)+1);/获得文件的扩展名SqlConnectioncon=newSqlConnection(server=.;database=pubs;uid=sa;pwd=;);/数据库连接对象con.Open();stringmystring=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=+fPath+;ExtendedProperties=Excel8.0;OleDbConnectioncnnxls=newOleDbConnection(mystring);OleDbDataAdaptermyDa=newOleDbDataAdapter(select*fromSheet1$,cnnxls);DataSetmyDs=newDataSet();myDa.Fill(myDs);if(myDs.Tables0.Rows.Count0)stringstrSql=;stringCnnString=Provider=SQLOLEDB;database=pubs;server=.;uid=sa;pwd=;OleDbConnectionconn=newOleDbConnection(CnnString);conn.Open();OleDbCommandmyCmd=null;for(inti=0;imyDs.Tables0.Rows.Count;i+)/第一个工作表中行数,不包括第一行,strSql=insertintotxtInsert(id,name)values(;strSql+=myDs.Tables0.Rowsi.ItemArray0.ToString()+,;strSql+=myDs.Tables0.Rowsi.ItemArray1.ToString()+);myCmd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论