使用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