WEB开发网
开发学院软件教学办公软件Excel Excel数据导入到SQL 2005 阅读

Excel数据导入到SQL 2005

 2010-10-01 21:16:12 来源:WEB开发网   
核心提示:前段时间由于工作需要,设计了一个基于 InfoPath+ SQL的查询系统,Excel数据导入到SQL 2005,设计完成后,突然发现查询系统所需要的原始数据都是存放在 Excel文档,至到 “完成 ”第五步:重新打到 SQL Server Management Studio,进入到导入的数据库

前段时间由于工作需要,设计了一个基于 InfoPath+ SQL的查询系统,设计完成后,突然发现查询系统所需要的原始数据都是存放在 Excel文档,如果将每条记录重新输入到 SQL中,那过程将非常繁琐,通过在网络查询得到二种方法,但过程还是不太方便。现将以下几种方法汇总以下:

一、在程序中,用 ADO.NET。代码如下:

//连接串 
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=Excel 8.0;Data Source=" + [EXCEL文件,含路径] + ";"; 
OleDbConnection conn = new OleDbConnection(strConn); 
conn.Open(); 
      
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); 
DataSet ds = new DataSet(); 
//一个EXCEL文件可能有多个工作表,遍历之 
foreach( DataRow dr in dtSchema.Rows ) 
{ 
  string table = dr["TABLE_NAME"].ToString(); 
  string strExcel = "SELECT * FROM [" + table + "]"; 
  ds.Tables.Add(table); 
 
  OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel,conn); 
  myCommand.Fill(ds,table); 
} 
 
conn.Close();

这样,读取出来的数据就藏在 DataSet里了。

采用这种方式,数据库所在机器不必装有 EXCEL。

二、在查询分析器里,直接写 SQL语句:

如果是导入数据到现有表,则采用

INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

的形式

如果是导入数据并新增表,则采用

SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

的形式。

以上语句是将 EXCEL文件里 SHEET1工作表中所有的列都读进来,如果只想导部分列,可以

INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

其实可以将 OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)当成一个表,例如我就写过这样一个句子:

INSERT INTO eval_channel_employee(channel,employee_id)

SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END

,b.id FROM

OPENROWSET('MICROSOFT.JET.OLEDB.4.0'

,'Excel 5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$) AS a,pers_employee b

WHERE a.员工编码 =b.code

不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为字段名。

这二种方式虽然非常好,但操作过程不太方便,经过测试发现在 SQL2005中直接可以实现导入功能。操作过程如下:

第一步:登录到 SQL Server Management Studio,

第二步:在 “对象资源管理器 ”中右键单击 “管理 ”,在弹出列表中单击 “导入数据 ”

第三步:在 “导入向导 ”对话框中单击 “下一步 ”,进入到 “选择数据源 ”对话框,在 “数据源 ”列表中选择 “Microsoft Excel ”,同时选择相应的 Excel 文档,完成后单击 “下一步 ”(一定要勾选该对话框中的 “首行包含列名称 ”,因此它是将 Excel文档中的列标题为数据库表中的列项标题)

第四步:指定目标数据库服务,依次单击 “下一步 ”。。。。至到 “完成 ”

第五步:重新打到 SQL Server Management Studio,进入到导入的数据库表,可以发现所导入的 Excel文档数据。

Tags:Excel 数据 导入

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接