纠结了N天了,照了N多资料,都解决不了,只好发帖求救了~问题描述如下:
思路是将数据库里的某个表导出,然后将库还原成初始空库,在将导出的表导入,用SQL语句解决。EXEC master..xp_cmdshell 'bcp pos.dbo.mem_card_info out c:\Temp.xls -c -q -S"127.0.0.1" -U"sa" -P"sa"'这步已经成功,然后
SELECT * into mem_card_info 
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',    'Data Source="c:\Temp.xls";User ID=jam;Password=jam;Extended properties=Excel 5.0')...[Sheet1$]这句报错:OLE DB 错误跟踪[OLE/DB Provider 'Microsoft.Jet.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005:  提供程序未给出有关错误的任何信息。]。
消息 7399,级别 16,状态 1,第 2 行
OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。还有一个情况就是,我的OFFICE是2007的,打开导出的Temp.xls的时候会提示什么"你尝试打开的"Temp.xls"的格式与文件扩展名制定的格式不一致,"会不会跟这个有关系?。。

解决方案 »

  1.   

    试试去重建一个excel,将这个excel的所有复制过去再用这个文件导入到SQL。如果不行,也有可能是驱动的问题,换台机子试下。
      

  2.   


    1,方法一:临时连接(需要配置Ad Hoc)
    1,
    SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
    'Data Source=E:\gongzi\人事资料.xls;Extended Properties=Excel 8.0')...[人事资料表$]
    2,
    SELECT *  FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;Database=E:\gongzi\人事资料.xls', [人事资料表$])方法二:注册连接服务器execute sp_addlinkedserver 
    @server='mlink',
    @srvproduct='Excel',
    @provider='microsoft.Jet.OLEDB.4.0',
    @datasrc='E:\gongzi\mytest.xls',
    @provstr='Excel 5.0'--查看
    SELECT * FROM OPENQUERY(mlink, 'SELECT * FROM [Sheet1$]')

    --更新
    UPDATE OPENQUERY(mlink, 'SELECT * from [Sheet1$] where...')
    SET [姓名] = '李四1'  WHERE 学号 = 1;
     */--如果是经常这样操作,注册一下服务器还好些。
     
    2,不用理会,我的打开也会弹出这个对话框,还没来得急解决。
      

  3.   

    可以直接使用MSSQL自带的导出导入功能啊。
      

  4.   

    对了新建个Excel是可以导入的 不过会报表已经存在的问题,然后就是这个表的字段是设置好的 ,有方法能保留该表设置吗,换个方式问就是将Excel中的数据插入该表(因为还原后该表是空的)而不是重建一个表。。谢谢各位大大了~
      

  5.   

    我试过用openrowset导入excel2007的表,但是一直报错,后来,我将excel表另存为excel2003的就可以了。你也可以试一下。
      

  6.   

    将导出的Excel文件打开,然后另存一下,另存为.xls 或者.xlsx格式,然后用sql server的导入导出向导将文件导入。试试这样!
      

  7.   

    终于把EXCEL换成了TXT,顺利导入导出~~谢谢各位帮助了~~结贴