信息系统在投入运行时,客户往往要求把已有的历史数据导入到系统中,而客户的历史数据通常都是excel格式的,把excel数据导入sql server 数据库通常有以下三种方法:
1.做一个导入程序
这种方法适合小数据量,且数据格式规范的情况,比如一些基本配置,基础设置信息。可以直接由用户完成,下面的两种方法则需要开发这完成。由于这样只能一行一行数据插入,效率比较低,大数据量的情况下插入数据库的时间会比较长。
2.直接在企业管理器用openDataSource方式把excel信息导入到数据库新建的表中,然后进行格式处理,符合要求后再插入到目标表中
适合大数据量,数据内容规范情况。如果数据内容有不符合数据类型的情况(主要是日期时间和数字)会直接被置为Null,所以可能会丢失一些数据。
导入的sql语句:
SELECT*into TableNameFROMOpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="D:/data.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
打开OpenDataSource的语句:
exec sp_configure 'show advanced options' ,1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries' ,1
Reconfigure
关闭OpenDataSource的语句:
execsp_configure'Ad Hoc Distributed Queries',0
reconfigure
有关OpenDataSource不能访问问题参考这里,注意37楼:management studio--->服务器对象-->链接服务器-->Microsoft.Jet.OLEDB.4.0-->右键属性-->访问接口选项:全都不选
3.首先把excel数据导入access数据库,然后使用sqlServer的导入功能,把access中的表导入sqlserver新建表,最后进行格式处理,插入到目标表
这里要注意在原始excel数据第一行数据和标题之间新加入一行,每一列都输入字母 a ,这样插入到acess后所有的数据类型都是字符型,数据不会丢失
适合大数据量,数据内容不太规范,不能直接导入的情况。