-->

导入Excel 2010到SQL Server(Import Excel 2010 into SQL

2019-09-29 02:56发布

我使用Excel来收集和配置数据,然后将其导入到SQL Server 2012的存储。

到目前为止,我一直在使用SQL Server的进出口向导,但它是一个痛苦手动设置它不断。 由于我使用的是快速的,当然它不会让我保存,甚至查看,实际的命令来传输数据。

我试图建立一个链接的服务器,每如何使用Excel与SQL Server链接服务器和分布式查询 ,但得到以下错误:

链接的服务器已被创建,但未能通过连接测试。 你要保持链接服务器?

执行Transact-SQL语句或批处理时出现异常。 (Microsoft.SqlServer.ConnectionInfo)

无法初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“FLTST”的数据源对象。
OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“FLTST”返回了消息“未指定的错误”。 (微软SQL服务器,错误:7303)

我想也许Excel版本号是问题,因为网页是从2005年,所以我试着用:

  • Excel的8.0(Excel 2002中)作为显示在页面上
  • Excel的12.0(Excel 2007中),这是精灵,似乎有什么用
  • Excel的14.0(Excel 2010中)我确实有

所有这些给了我同样的结果。

接下来,我尝试了分布式查询如图所示,在导入excel文件到SQL Server Express ,(再次与供应商串的不同变化)

USE ExTest

SELECT * INTO TstTbl FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 14.0;Database=c:\ExTest.xlsm', [Contacts])

go

这给了我下面的错误:

OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“(空)”返回了消息“未指定的错误”。
消息7303,级别16,状态1,3号线
无法初始化OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”链接服务器“(空)”的数据源对象。

而不是去到SQL Server和拉动的数据,我应该留在Excel和推过来?

我究竟做错了什么?

PS: 不要告诉我将其转换为csv文件! 我试图做更少的步骤,而不是更多!

Answer 1:

遇到类似问题,你有你的问题我已经做了这方面的一些研究。 我的问题还没有完全解决,但我想我可能让你进了一步。 虽然问题是旧有可能是别人谁需要帮助。

通过运行:

SELECT * 
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0 Xml;HDR=YES;Database=P:\Path\File.xlsx','SELECT * FROM [Sheet1$]');
GO

我收到以下错误信息:

消息15281,级别16,状态1,行19 SQL Server阻止访问声明“OPENROWSET / OPENDATASOURCE”的成分“特设分布式查询”,因为该组件被关闭作为此服务器安全配置的一部分。 系统管理员可以通过使用sp_configure启用“特设分布式查询”的。 有关启用“特设分布式查询”的更多信息,搜索SQL Server联机丛书“特设分布式查询”。

要解决我运行以下命令:

sp_configure 'show advanced options', 1  
RECONFIGURE  
GO  
sp_configure 'ad hoc distributed queries', 1  
RECONFIGURE  
GO 

但我得到一个新的错误mesasge:

消息7302,级别16,状态1,行19无法创建OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”链接服务器“(空)”的一个实例。

为了纠正我运行:

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

但我得到代替这个错误:

消息7438,级别16,状态1,第19行的32位OLE DB提供程序“Microsoft.ACE.OLEDB.12.0”不能在进程中加载​​的64位SQL Server上。

在我来说,我已经要求IT部门在服务器上安装Excel的64位版本,并希望从Excel导入时,应该是技术问题结束。

清理之后,我禁止我刚启用的设置:

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 0
GO

EXEC sp_MSSet_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 0
GO

sp_configure 'ad hoc distributed queries', 0
RECONFIGURE  
GO

sp_configure 'show advanced options', 0  
RECONFIGURE  
GO  


Answer 2:

  1. 创建一个SSIS包用Excel数据源的连接管理器,目的是你的SQL Express,OLE DB目的地
  2. 当您创建的Excel连接管理器,你可以只使用一个现有的Excel文件
  3. 定义一个用户变量,如用户::的资源文件,它是用来输入excel文件全路径
  4. 创建Excel的连接管理器后,右键点击 - > preperties->找到“表达”,只是给你的[用户::的SourceFile]到表情
  5. 只要创建从源到目的地的一个简单的数据流
  6. 保存和调试SSIS包,确保所有凭证作品和数据能够流入目标表。 注意:不要在你的包保存sensitvie数据与机器密钥ecrypted
  7. 每次当你需要加载一个新的文件,使用DTEXEC执行包和覆盖参数

祝好运



文章来源: Import Excel 2010 into SQL Server