使用SQL Server 2005导入Excel 2007文件
我有一个大约301808行和2列的Excel 2007文件。 我试图使用SSIS导入,但不能使用2007年的Excel。 然后我决定尝试在SQL Server中创build一个链接服务器,按照以下说明操作:
- 在SQL Server Management Studio中,展开对象资源pipe理器中的服务器对象。
- 用鼠标右键单击链接服务器,然后单击新build链接的服务器。
- 在左窗格中select常规页面,然后按照下列步骤操作:
- 在第一个文本框中键入链接服务器的任何名称。
- select其他数据源选项。
- 在提供程序列表中单击Microsoft Jet 4.0 OLE DB提供程序。
- 在产品名称框中键入Excel作为OLE DB数据源的名称。
- 在“数据源”框中,键入Excel文件的完整path和文件名。
- 在提供程序string框中,为Excel 2002,Excel 2000或Excel 97 – 工作簿键入Excel 8.0。
- 单击确定以创build新的链接的服务器。
从这里: http : //support.microsoft.com/kb/306397/EN-US
然而,这些指令只涵盖了以前的excel文件,而不是2007年,所以我查了2007年的连接string,并且在链接服务器的设置中使用了Excel 12.0而不是Excel 8.0:
- 提供程序:Microsoft Office 12.0 Access数据库引擎OLE DB
- 提供商产品名称:Excel数据来源:C:\ Documents and
- 设置\用户名\桌面\主\ FilesIns \ MyExcelFile.xlsx提供程序
- string:Excel 12.0
- 位置:
- 目录:
然后我得到这个错误:
链接服务器“EXCEL_MY_FILE”的OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不包含“Report 1 $”表。 该表或者不存在,或者当前用户对该表没有权限。
我进入安全,并添加NT权限\系统,以防万一它是权限问题,它仍然给了我上面的错误。
Excel表格被称为“报告1”。
我也尝试在sql中使用openrowset来查看发生了什么,我得到了这个:
SQL Server阻止访问组件“Ad Hoc Distributed Queries”的STATEMENT“OpenRowset / OpenDatasource”,因为此组件是作为此服务器的安全性configuration的一部分而被closures的。
然后我尝试下面的链接中的代码,看看它是否帮助我使用openrowset:
如何启用Ad Hoc分布式查询
EXEC sp_configure 'show advanced options', 1 RECONFIGURE GO EXEC sp_configure 'ad hoc distributed queries', 1 RECONFIGURE GO
得到:
OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”为链接的服务器“(空)”返回消息“FROM子句中的语法错误”。 消息7321,级别16,状态2,行1准备查询“select*从C:\ Documents and Settings \ UserName \ Desktop \ Main \ FilesIns \ MyExcelFile.xlsx”以执行对OLE DB提供程序“Microsoft”时出错。 ACE.OLEDB.12.0“用于链接服务器”(null)“。
所以我不确定在我的openrowset语句中的值是否正确。
真的只是寻找一种方法来导入这个文件到一个SQL表中,而不使用SSIS – 我无法使用它。
谢谢
安德鲁
在你的sp_Reconfigure下,看到你在这里引用一篇文章..但是,我想你可能需要去微软而不是..
http://technet.microsoft.com/en-us/library/ms187569%28v=sql.90%29.aspx
这里有很多关于如何使用OPENROWSET的例子 –
http://technet.microsoft.com/en-us/library/ms190312%28v=sql.90%29.aspx