SQL 将txt文件导入sql数据库

更新时间:2023-08-06 05:11:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

SQL 将txt文件导入sql数据库,资源免费,大家分享!

就一句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,Jim

2,Kate

3,Tom

...

BULK INSERT dbo.TABLE1

FROM 'd:\stu.txt'

WITH (

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

SQL 将txt文件导入sql数据库,资源免费,大家分享!

实现导入的C#代码如下:

protected System.Web.UI.HtmlControls.HtmlInputFile fName;

protected System.Web.UI.WebControls.Button BtnInsert;

//上面两个控件自己添加

代码

private void BtnInsert_Click(object sender, System.EventArgs e) {

string fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件

string extName=fPath.Substring(http://www.77cn.com.cnstIndexOf(".")+1);//获得文件的扩展名

SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象

con.Open();

try

{

SqlCommand com=new SqlCommand("BULK INSERT pubs.dbo.txtInsert FROM '"+fPath+"' WITH (FIELDTERMINATOR = ',',ROWTERMINATOR= '\n')",con);

//其中的 FIELDTERMINATOR=','指明字段间所使用的分隔符为逗号

//其中 ROWTERMINATOR= '\n'指明记录间所使用的分隔符为回车

com.ExecuteNonQuery();

Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");

}

catch (SqlException SQLexc)

{

Response.Write("导入数据库时出错:" + SQLexc.ToString());

}

con.Close();

}

好了,这个txt文件的导入相对简单,在数据库中我也没有设置主键,我在里面也没有加出错回滚事务操作,在下面的excel文件的导入中介绍。

3.excel 文件的导入

在c盘里建立一个stu.xls文件,在sheet1工作表中有两列数据如下:

编号 姓名

1 tom

2 jack

3 john

SQL 将txt文件导入sql数据库,资源免费,大家分享!

注 意,工作表的第一行是作为标题行的不会被插入到数据库中,真正导入从第二行开始。

为了演示事物出错回滚,在这里将txtInsert数据库表中的 id字段设置为主键。实现的C#代码如下:

代码

private void BtnInsert_Click(object sender, System.EventArgs e) {

string fPath=this.fName.PostedFile.FileName;//获得要导入的文本文件

string extName=fPath.Substring(http://www.77cn.com.cnstIndexOf(".")+1);//获得文件的扩展名

SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象

con.Open();

//注意下面的连接字符串,是它起到了导入的作用

SqlCommand excelCmd=new SqlCommand("insert into txtInsert select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE="+fPath+"',Sheet1$)",con);

SqlTransaction myTran=con.BeginTransaction();//开始一个事务操作 excelCmd.Transaction=myTran;

try

{

excelCmd.ExecuteNonQuery();

http://www.77cn.com.cnmit();//提交事务

Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");

}

catch (SqlException err)

{

myTran.Rollback(); //出错回滚事务操作

//以下三行是去掉数据库出错信息中的非法字符单引号、回车和换行符,否则在使用时 javascript代码将有语法错误

//因为js的编码和c#的编码不同

string errString=err.Message.Replace("'"," ");

errString=errString.Replace(Convert.ToChar(13).ToString(),""); errString=errString.Replace(Convert.ToChar(10).ToString(),""); //显示出错信息框

Response.Write("<script language=javascript& gt;alert('导入数据库时出错!详细信息:"+errString+"')</script>");

}

con.Close();

}

这里“显示出错信息框”开始我没有田间那三行代码,结果搞了半天,最后还是在html文件中发现javascript代码部分出现了分行,老是提示“未结 束的字符串常量”,所以导致不能打开信息框,郁闷死我了,花了好多时间。

4.将excel中部分列导入数据库的方法

SQL 将txt文件导入sql数据库,资源免费,大家分享!

上面讲了关于将整个 excel文件导入数据库的方法,那么在实际项目中遇到将excel文件中若干列导入数据库怎么办的呢,原理差不多,我就将代码直接给出了:

代码

string fPath=this.fName.PostedFile.FileName;//获得要导入的文本文

string extName=fPath.Substring(http://www.77cn.com.cnstIndexOf(".")+1);//获得文件的扩展名

SqlConnection con=new SqlConnection("server=.;database=pubs;uid=sa;pwd=;");//数据库连接对象

con.Open();

string mystring="Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = '"+fPath+"';Extended Properties=Excel 8.0";

OleDbConnection cnnxls = new OleDbConnection (mystring);

OleDbDataAdapter myDa =new OleDbDataAdapter("select * from [Sheet1$]",cnnxls);

DataSet myDs =new DataSet();

myDa.Fill(myDs);

if(myDs.Tables[0].Rows.Count > 0)

{

string strSql = "";

string CnnString="Provider=SQLOLEDB;database=pubs;server=.;uid=sa;pwd=";

OleDbConnection conn =new OleDbConnection(CnnString);

conn.Open ();

OleDbCommand myCmd =null; for(int i=0; i<myDs.Tables[0].Rows.Count;i++)//第一个工作表中行数,不包括第一行,

{

strSql="insert into txtInsert(id,name) values (";

strSql += myDs.Tables[0].Rows[i].ItemArray[0].ToString() + ", '";

strSql += myDs.Tables[0].Rows[i].ItemArray[1].ToString() + "')";

myCmd=new OleDbCommand(strSql,conn);

try

{

myCmd.ExecuteNonQuery

();

Response.Write("<script language=javascript& gt;alert('数据导入成功!')</script>");

SQL 将txt文件导入sql数据库,资源免费,大家分享!

}

catch (OleDbException err)

{

Response.Write("导入数据库时出错:" +err.ToString());

break;

}

}

conn.Close();

本文来源:https://www.bwwdw.com/article/1oum.html

Top