将数据从Excel导入SQL Server

时间:2014-08-10 12:08:16

标签: sql-server excel sql-server-2012 oledbconnection

我想将Excel文件导入SQL Server,但是我遇到了错误。

我的代码:

create table test
(
    AccountNumber varchar(50),  
    AccountName varchar(50),
    ParentAccountNumber varchar(50)

)

select * 
into test 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 
    'Excel 8.0;Database=D:\testing.xls;HDR=YES', 
    'SELECT * FROM [Sheet1$]')

错误:

  

Msg 7302,Level 16,State 1,Line 10
  无法为链接服务器“(null)”创建OLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的实例。

注意:

  • Excel版本:2007
  • SQL Server版本:2012

3 个答案:

答案 0 :(得分:1)

如果您不知道编写脚本,可以通过向导本身来完成。

  1. 右键单击要将Excel文件导入的数据库名称。选择任务 - >导入。
  2. 将打开新向导并选择源为Microsoft excel,目标为Sql server,并进行身份验证。
  3. 休息一切都是可以自我挽回的。
  4. 您可以在导入之前预览数据,并可以控制要导入的列。
  5. Atlast点击完成以运行包。
  6. 将确认您成功导入。

答案 1 :(得分:0)

尝试运行以下代码:

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO

EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO

select * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',   
'Excel 12.0;Database=D:\testing.xls;HDR=YES',   
'SELECT * FROM [Sheet1$]')   

运行此代码时,请确保您的Excel工作表已关闭。

答案 2 :(得分:0)

创建表格后尝试此操作

INSERT INTO test (AccountNumber , AccountName , ParentAccountNumber)
SELECT *
FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0',
      'Excel 8.0;Database=D:\testing.xls;HDR=YES',
      'SELECT * FROM [Sheet1$]');