如果要用你上面的语句插入的话,文本文件必须存在,而且有一行:姓名,银行账号1,银行账号2
然后就可以用下面的语句进行插入
注意文件名和目录根据你的实际情况进行修改.insert into
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Text;HDR=Yes;DATABASE=C:\'
)...[aa#txt]
--,aa#txt)
--*/
select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 
from 
opendatasource('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls'
--,Sheet1$)
)...[Sheet1$]

解决方案 »

  1.   

    我用
    select *
    from 
    opendatasource('MICROSOFT.JET.OLEDB.4.0'
    ,'Excel 5.0;HDR=YES;IMEX=2;DATABASE=d:\yhzz.xls'
    --,Sheet1$)
    )...[Sheet1$]提示:
    服务器: 消息 7314,级别 16,状态 1,行 1
    OLE DB provider 'MICROSOFT.JET.OLEDB.4.0' does not contain table 'Sheet1$'.  The table either does not exist or the current user does not have permissions on that table.可是 d:\yhzz.xls中确实是有 Sheet1,Sheet2,Sheet3的。
      

  2.   

    如果你想直接插入并生成文本文件,就要用bcpdeclare @sql varchar(8000),@tbname varchar(50)--首先将excel表内容导入到一个全局临时表
    select @tbname='[##temp'+cast(newid() as varchar(40))+']'
    ,@sql='select 姓名,银行账号1=left(银行账号,8),银行账号2=right(银行账号,8) 
     into '+@tbname+' from 
    opendatasource(''MICROSOFT.JET.OLEDB.4.0''
    ,''Excel 5.0;HDR=YES;IMEX=2;DATABASE=c:\a.xls''
    )...[Sheet1$]'
    exec(@sql)--然后用bcp从全局临时表导出到文本文件
    set @sql='bcp "'+@tbname+'" out "c:\aa.txt" /S"(local)" /P"" /c'
    exec master..xp_cmdshell @sql--删除临时表
    exec('drop table '+@tbname)