用查询分析器查询excel表的数据并导入

     用查询分析器可以查询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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7311285/viewspace-666327/

你可能感兴趣的:(用查询分析器查询excel表的数据并导入)