excel导入至sql2008语句的数据导入问题

 sp_configure  ‘Show advanced options’,1  显示服务器配置选择


  RECONFIGURE WITH OVERRIDE                   执行
  
  sp_configure 'Ad Hoc Distributed Queries',1  启用‘Ad Hoc Distributed Queries ’选项 ( 开启外围设置)
  
  RECONFIGURE                                 执行


  
  然后在执行
  INSERT INTO [student].[dbo].[newtable]
           ([性别]
           ,[姓名])
  SELECT *  FROM 
  OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0','Extended Properties ="Excel 12.0;HDR=YES;IMEX=1";Data Source= "e:\sql1.xls"')...[Sheet1$]
  语句会出现
  
  
  消息 7399,级别 16,状态 1,第 1 行
  链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.ACE.OLEDB.12.0" 报错。提供程序未给出有关错误的任何信息。
  消息 7330,级别 16,状态 2,第 1 行
  无法从链接服务器 "(null)" 的 OLE DB 访问接口"Microsoft.ACE.OLEDB.12.0"提取行。




  应该加上此语句:
  EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    --允许动态参数
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1     打开或者启动此驱动。




  之后再执行上条语句即可。


  


  openDatasource:不使用连接服务器的名称,而提供特殊的链接信息.
  使用openDatasource的前提是仅当 DisallowAdhocAccess 
  注册表选项针对指定的提供程序显式设置为 0,
  并且启用 Ad Hoc Distributed Queries 高级配置选项时,
  OPENDATASOURCE 才可用于访问 OLE DB 数据源中的远程数据。
  如果未设置这些选项,则默认行为不允许即席访问。








  OLE DB 访问接口‘Microsoft.Jet.OLEDB.4.0’ 配置为在单线程单元模式下运行,所以该访问接口无发使用于分布式查询。
  解决办法
1.下载


ACE2010的驱动,64位的。


http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d




2.将所有Microsoft.Jet.OLEDB.4.0 改成Microsoft.ACE.OLEDB.12.0




  导出至excel表中 如果表存在:
  insert into OPENROWSET('MICROSOFT.ACE.OLEDB.12.0'
,'Excel 5.0;HDR=YES;DATABASE=e:/test.xlsx',sheet1$) SELECT * FROM dbo.hua


  如果表为空会出现一些列值于列名不匹配的问题,这样最好在excel中建立列名,之后导入就OK了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值