由于业务需求,需要将excel 文件中某一列的数据按照对应关系更新到已有的表中,即将表中某一列的数据按照对应关系更新到已有的数据中,从网上搜索到了一些代码但是在实际使用过程中还是遇到不少问题,下面列出可执行代码,以及更新数据中出现的问题及解决方案。
-- 连接成功以后excel 文件就类似一个小型的数据库,里面的工作表就类似数据库里的表
-- 通过搜索语句可以检测是否能正确连接并读取excel 语句
SELECT * FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source="e:\test1.xlsx";Extended properties=Excel 13.0')...sheet1$ as a
-- 更新语句
update Interface_Voucher_Head set hscode = (SELECT top 1 a.凭证编号 FROM OpenDataSource( 'Microsoft.ACE.OLEDB.12.0','Data Source="e:\test1.xlsx";Extended properties=Excel 5.0')...sheet1$ as a where right(a.OA单据号,14) = Interface_Voucher_Head.PayID)
出错提示:
因为 OLE DB 访问接口 'MICROSOFT.JET.OLEDB.4.0' 配置为在单线程单元模式下运行,所以该访问接口无法用于分布式查询。
报错原因:
在64SQL Engine中已经不提供jet.oledb.4.0的驱动
解决办法: