sql sever读取Excel总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql sever读取Excel总结相关的知识,希望对你有一定的参考价值。

主要用到openrowset,opendatasource系统函数,这两个函数任意一个都能完成任务

用这种方法可以实现Excel和sqlserver表之间的相互导入导出。

 

openrowset的写法

复制代码
--3,链接Excel Microsoft Jet 4.0 OLE DB Provider
--读Excel数据,注意Excel必须事先关闭
select * 
from
openrowset(\'Microsoft.Jet.OLEDB.4.0\',\'Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls\', Sheet1$) 

--将数据写入Excel2003文件
--注意:首先需要对Excel的Sheet1的第一行设置与检索列相等的一些值,可以是任意值,
--但最好与列名相同;另外oledb可能对Excel没有写权限,需要对Excel表格的属性--》安全中加一个everyone权限
insert  into   
OPENROWSET(\'Microsoft.Jet.OLEDB.4.0\',\'Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls\',Sheet1$)   
select *  from  dbo.DQuestionData 
复制代码

opendatasource的写法

select * 
from
opendatasource(\'Microsoft.Jet.OLEDB.4.0\',\'Excel 8.0;HDR=Yes;DATABASE=E:/Temp/myExcel20131212.xls\')...Sheet1$

上面的代码是链接Excel2003的,对于Excel2007的链接 ,由于oledb提供程序不同,所以链接方式会不同。

下面附一个不同的链接方式,也是从网上找到的。

复制代码
--> Jet 引擎访问 Excel 97-2003  
select * from OpenRowSet(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\', \'select * from [Sheet1$]\')  
select * from OpenRowSet(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\', [Sheet1$])  
select * from OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\', \'Excel 8.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\')...[Sheet1$]  
select * from OpenDataSource(\'Microsoft.Jet.OLEDB.4.0\', \'Data Source=D:/97-2003.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"\')...[Sheet1$]  
  
--> ACE 引擎访问 Excel 97-2003  
select * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\', \'select * from [Sheet1$]\')  
select * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\', [Sheet1$])  
select * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/97-2003.xls\')...[Sheet1$]  
select * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Data Source=D:/97-2003.xls;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"\')...[Sheet1$]  
  
--> ACE 引擎访问 Excel 2007  
select * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx\', \'select * from [Sheet1$]\')  
select * from OpenRowSet(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx\', [Sheet1$])  
select * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Excel 12.0;HDR=Yes;IMEX=1;Database=D:/2007.xlsx\')...[Sheet1$]  
select * from OpenDataSource(\'Microsoft.ACE.OLEDB.12.0\', \'Data Source=D:/2007.xlsx;Extended Properties="Excel 12.0;HDR=Yes;IMEX=1"\')...[Sheet1$]  
复制代码

 

以上是关于sql sever读取Excel总结的主要内容,如果未能解决你的问题,请参考以下文章

SQL SEVER分类汇总后如何让小计和总计放到下面

如何把TXT文件中的数据批量导入SQL sever 2000中?

SQL SEVER 开窗函数总结

SQL SEVER数据库重建索引的方法

sql server 读取excel里的数据

SQL Sever——远程过程调用失败(0x800706be)

(c)2006-2024 SYSTEM All Rights Reserved IT常识