SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions
請問,以上SQL為什麼執行不了.我用的是 SQL2000,EXCEL 2003
請大家幫忙.謝謝!!!
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions
請問,以上SQL為什麼執行不了.我用的是 SQL2000,EXCEL 2003
請大家幫忙.謝謝!!!
SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions$
SELECT * FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
http://blog.csdn.net/hopewell_go/archive/2006/09/15/1228201.aspx
加 $ 後,還是出現以上提示
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
xactions工作区名称,其工作区的名称的后缀$不能少
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...sheet1$
我改成上面這個樣子了,還是不行.
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions$
出以上的提示
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\MyData\DistExcl.xls',
NULL,
'Excel 5.0'
GO
EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', 'sa', 'Admin', NULL--返回在本地服务器上定义的链接服务列表
exec sp_linkedservers
EXEC sp_addlinkedserver 'ExcelSource',
'Jet 4.0',
'Microsoft.Jet.OLEDB.4.0',
'c:\對照關係.xls',
NULL,
'Excel 8.0'
GO
EXEC sp_addlinkedsrvlogin 'ExcelSource', 'false', 'sa', 'Admin', NULL--返回在本地服务器上定义的链接服务列表
exec sp_linkedservers
10.3.3.1 SQLOLEDB SQL Server 10.3.3.1 NULL NULL NULL
HZ SQLOLEDB SQLOLEDB 10.3.3.1 NULL NULL ERPDB
SZ SQLOLEDB SQLOLEDB 10.2.1.210 NULL NULL YAZAKI
TP SQLOLEDB SQL OLEDB 10.1.2.37 NULL NULL IEDB01
Z03G01ERP SQLOLEDB SQL Server Z03G01ERP NULL NULL NULL
repl_distributor SQLOLEDB SQL Server Z03ERPDB02 NULL NULL NULL
我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是用查詢分析器連上去的.
题目:在SQL中訪問 EXCEL 數據?????
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactions最后的 xactions 改为 [sheet1$]
我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是本面用查詢分析器連數據庫上,然後用 sql 查詢 查機的 excel .
我的是意思是:excel在我本機.但數據庫在另一臺電腦上.我是本面用查詢分析器連到數據庫上,然後用 sql 查詢 查本機的 excel .
除非你要在本机查询远程的SQL数据库
'Data Source="c:\對照關係.xls";User ID=Admin;Password=;Extended properties=Excel 5.0)...xactionsData Source 必须输绝对路径。如果数据库和exlce不再同一机器上。必须写
\\ip\c$\對照關係.xls
----------------------------------------------------------------
这是你说的,可以本地执行;
“執行異地數據庫”就是查询远程的SQL数据库,不是查询EXCEL
-- 假设在 D 盘下有 D:\test.xls 文件,那么从该文件(前提是该文件不能正在使用中)导入到SQL SERVER 的SQL语句写法有以下三种方式:
-- 第 1 种写法
SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=d:\test.xls;Extended Properties=Excel 8.0')...[sheet1$]
-- 第 2 种写法
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=d:\test.xls', [sheet1$])
-- 第 3 种写法,最强功能,还可以通过写条件过滤。
SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\test.xls', 'SELECT * FROM [sheet1$] Where A = 223.0')
-- 以上的写法换为 SELECT * INTO FROM 即可导入 SQL 数据库 , 必须要加上 $ 符号。
--- 另外还有三种导入的技巧 :
A:
使用 DTS
可以使用 SQL Server 数据传输服务 (DTS) 导入向导将 Excel 数据导入 SQL Server 表。在逐步执行向导并选择 Excel 源表时,要记住附加美元符号 ($)
的 Excel 对象名称代表工作表(例如,Sheet1$),而没有美元符号的普通对象名称代表 Excel 指定的范围。
B:
使用链接服务器
然后可以
SELECT * Into ExeclTable FROM EXCELLINK...[Sheet1$]
C:
使用 BCP 工具
exec master..xp_cmdshell 'bcp "YTHR.Dbo.Employee2" in "D:\test.xls" -c -q -U"sa" -P""'
这种写法必须要在数据库中存在表名
Server: Msg 7415, Level 16, State 1, Line 1
Ad hoc access to OLE DB provider 'Microsoft.Jet.OLEDB.4.0' has been denied. You must access this provider through a linked server.
大家要能看懂這個提示,才知道問題在那裡
既然要在本地SQL查询本地的EXCEL,跟远程的SQL有什么关系呢
We are in the same boat