用查询分析器可以查询excel表格的数据,用如下的SQL 语句:
SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="h:\industry.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[t_industry$]
"h:\industry.xls"这个是execel表格存放的路径,"t_industry"是工作表的名称;
使用这个语句的时候注意,需要确保 sql server功能的外围配置器中,"启用
OPENDATASOURCE和
OPENROWSET支持"选项打开。否则报错。
OPENDATASOURCE和
OPENROWSET这2个函数功能基本一样,openquery、openrowset、opendatasource这几个函数的区别:
OPENDATASOURCE
不使用链接的服务器名,而提供特殊的连接信息,并将其作为四部分对象名的一部分。
OPENQUERY
在给定的链接服务器(一个 OLE DB 数据源)上执行指定的直接传递查询。可以在查询的 FROM 子句中像引用表名那样引用OPENQUERY 函数。依据 OLE DB 提供程序的能力,还可以将 OPENQUERY 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,但是 OPENQUERY 只返回第一个。
OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样引用OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引用为 INSERT、UPDATE 或 DELETE 语句的目标表。尽管查询可能返回多个结果集,然而 OPENROWSET 只返回第一个。
也可以用SQL 语句的方式,导入excel表格的数据到数据库中:
SELECT * into 新表名
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="h:\industry.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[t_industry$]
上述语句使用时,需确保数据对象“新表名”在数据库中并不存在,导入数据的同时,会自动新建这个表。但也可以添加参数,以记录追加的方式,将excel表格中的数据追加到已存在的SQL Sercer的表中去。
insert into t_industry(字段1,字段2,.....)
select 字段1,字段2,.... from
OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0 '
, 'Excel 5.0;HDR=YES;DATABASE=h:\industry.xls ',_industry$)
但是这个地方要注意主键冲突的问题。可以在后面加上筛选语句:
where 主键 not in(select 主键 from 表) --筛选出主键重复的记录,不插入
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7311285/viewspace-666327/,如需转载,请注明出处,否则将追究法律责任。