首页 ┆网站地图 ┆游戏资讯 ┆天龙八部 ┆资源下载 ┆淘宝网购物 ┆淘宝数码产品 ┆淘宝数码相机 
设为首页
加入收藏
联系我们
高级搜索
您当前的位置: 主页 > 数据库 > SQL库 > 实现Excel数据导入到SQL2005中的方法
实现Excel数据导入到SQL2005中的方法
来源: 发布时间:2008-01-03 浏览:人次  字体:[  

前段时间由于工作需要,设计了一个基于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文档数据。

 
相 关 文 章 发布商链接
·SQL取出每个产品的Top n条记录代码
·sql语句实现根据字段删除重复行代码
·数据库怎么利用timestamp时间戳处理...
·利用计划任务定时备份Express2005数...
·SQL过滤空字段只显示有字的语句示例
·sql2000还原数据库报设备激活错误的...
·SQL2005怎么恢复只有mdf的库文件?
·深入分析SQL Server表的主键
·sqlserver时间格式使用总结精
·sql查询分析器设置快捷键提高开发效...
 §最新评论:(评论内容只代表网友观点,与本站立场无关!)淘宝店铺一条街淘宝运动鞋淘宝网热门男装
网名:  验证码:  【所有评论】【↑返回顶部
评 分:12345
评论内容:(不能超过500字,请自觉遵守互联网相关政策法规。[按 Ctrl+Enter 可直接提交]
注意:请勿在本站发布政治话题、色情及违反法律的内容。
IT知道网 声明:刊登此文章是为了传递更多信息,文章内容仅供参考,转载请注明出处。
推 荐 文 章
·图解Sql2005创建分区表的全过...
·sqlserver怎么在远程服务器创...
·SQL2008如何创建定时作业?
·Sql2008如何使用自定义表类型
·SQl查找表中含有NULL值的字段
·SQL2005如何实现自定义分组的
·SQL2005利用vbscript实现数据
·图解Sql2000的数据库备份文件
·Sql获取当前日期是星期几的代
·sql将其他进制数转化为二进制
·SQL实现按小时分组统计查询代
·SQL语句如何实现按月分组统计
推 荐 主 题
java专题.net开发php学习
数据库windows7Word技巧
天龙八部QQ技巧IT职场
javascriptPhotoShop 淘宝购物
图 文 推 荐
用sql实现查询重复记录的代码用sql实现查询重复记录的代码
SQL2008行数据和页数据的压缩功能SQL2008行数据和页数据的压缩功能
图解Sql2005创建分区表的全过程图解Sql2005创建分区表的全过程
热 门 文 章
·超详细图解sql2005安装全过程
·图解SQL2008安装向导的使用
·安装SQL2005提示:找不到任何...
·sql2005开发版:选择的功能中...
·图解Sql2000的数据库备份文件...
·sql排序规则的简介及其修改操...
·SQL数据库置疑的原因和解决方...
·sql2000与sql2005数据如何互...
·带输入输出参数的存储过程介...
·sql精确查询2个时间范围内的...
·sql多行转为一列的合并问题,...
·sql语句联合删除多个表技巧
热 门 关 键 字
 网站首页 - 关于本站 - 加入收藏 - 网站地图 - 淘宝购物 - 在线留言 - 广告服务 - 返回顶部
Copyright © 2007 IT知道网.[冀ICP备07026896号]. All Rights Reserved .