SQLServer2008 将本地excel导入到远程服务器表 原创 2016年03月11日 14:54:15 823 [sql] view plain copy --1.创建链接服务器,相当于创建一个访问远程数据库的快捷方式 exec sp_addlinkedserver 'TestLink', ' ', 'SQLOLEDB ', '111.11.1.111'; exec sp_addlinkedsrvlogin 'TestLink', 'false',null,'sa','123456' ; --2.测试访问远程服务器的表 select * from TestLink.TestDB.dbo.TestTable --3.插数据 insert into TestLink.TestDB.dbo.TestTable(sfzh,name) select sfzh,name FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES; DATABASE=E:\test.xls','SELECT * FROM [Sheet1$]') --3.2.1用openrowset函数,引用4.0的库 select * from openrowset('microsoft.jet.oledb.4.0', 'Excel 5.0;database=c:\t2.xls', --文件必须存在 sheet1$) --表必须存在 --3.2.2用openrowset函数,引用12.0的库 select * from openrowset('microsoft.ace.oledb.12.0', 'Excel 12.0;database=c:\test.xlsx', 'select * from [sheet1$]') SQL SERVER 和EXCEL的数据导入导出 1、在SQL SERVER里查询Excel数据: -- ====================================================== SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。 SELECT * FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions ------------------------------------------------------------------------------------------------- 2、将Excel的数据导入SQL server : -- ====================================================== SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$] 实例: SELECT * into newtable FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions ------------------------------------------------------------------------------------------------- 3、将SQL SERVER中查询到的数据导成一个Excel文件 -- ====================================================== T-SQL代码: EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""' 参数:S 是SQL服务器名;U是用户;P是密码 说明:还可以导出文本文件等多种格式 实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"' EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword' 在VB6中应用ADO导出EXCEL文件代码: Dim cn As New ADODB.Connection cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;" cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'" ------------------------------------------------------------------------------------------------ 4、在SQL SERVER里往Excel插入数据: -- ====================================================== insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3) T-SQL代码: INSERT INTO OPENDATASOURCE('Microsoft.JET.OLEDB.4.0', 'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$] (bestand, produkt) VALUES (20, 'Test') 查询语句SqlServer与Excel数据导入导出 转载 2016年04月01日 09:18:53 1875 一、Excel文件在sqlserver数据库的本地 1、启用Ad Hoc Distributed Queries的方法 exec sp_configure 'show advanced options',1 reconfigure exec sp_configure 'Ad Hoc Distributed Queries',1 reconfigure 2、从数据库将数据导入到Excel insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Excel文件 名.xls',Sheet1$)select * from 数据库表名 3、从Excel导入到数据库中 insert into 数据库表名 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Excel文件名.xls',Sheet1$) /* 说明: Microsoft.Jet.OLEDB.4.0:数据库提供程序,连接驱动 Data Source:excel的路径 User ID:excel用户名,默认为Admin Password:密码。默认为空 Extended properties:excel版本 [Sheet1$]:Sheet1表单名称 */ /* --将查询结果插入其他表中(注意字段个数必须一致,并且一一对应) insert into 表名(字段1,字段2,字段3,字段4) select 人员,时间,内容,结果 from OpenDataSource('Microsoft.Jet.OLEDB.4.0', 'Data Source=d:\log.xls;User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$] */ 4、关闭Ad Hoc Distributed Queries的方法 exec sp_configure 'Ad Hoc Distributed Queries',0 reconfigure exec sp_configure 'show advanced options',0 reconfigure 如果是32位的操作系统,32位的sqlServer如上操作就不存在什么问题了,但如果是64位的操作系统和sqlServer以上的做法就行不通了,而且会报错 错误信息如下: 消息 7302,级别 16,状态 1,第 1 行 无法创建链接服务器 '(null)' 的 OLE DB 访问接口 'MICROSOFT.JET.OLEDB.4.0' 的实例。 原因: 在64SQL Engine中已经不提供jet.oledb.4.0的驱动了 解决方法: 下载一个ACE.Oledb.12.0 fo r X64位的驱动,并把连接字符串Microsoft.jet.Oledb.4.0 更改为 Microsoft.ACE.OLEDB.12.0 Microsoft Access 2010 数据库引擎可再发行程序包下载地址: http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d 完成后改写语句:select * from OpenRowSet ('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;HDR=Yes;Database=c:/test.xls', [Sheet1$] ) 这样就搞定了。