我正在使用它:
insert into bla select *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;Database=c:\bla.xls',
'select * from [Sheet1$]');
但由于某些原因,某些值包含null,尽管原始数据肯定包含值(例如'abc')。这可能是造成这种奇怪行为的原因。感谢。
克里斯
答案 0 :(得分:2)
尝试添加“; IMEX = 1”(将所有字段作为文本读取 - 这可能与混合值和文本有关。)
第二个选项是尝试安装Office数据连接组件(来自http://www.microsoft.com/downloads/details.aspx?FamilyID=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en) - 并解决OLEDB问题。然后设置你的OPENROWSET:
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=c:\bla.xls;HDR=Yes;IMEX=1','SELECT * FROM [Sheet1$]');
祝你好运!
答案 1 :(得分:0)
我发现将Hkey_Local_Machine / Software / Microsoft / Jet / 4.0 / Engines / Excel / TypeGuessRows设置为零并使用IMEX = 1选项将解决问题。意味着性能下降,因为这意味着整个柱/表被检查,但我没有注意到任何重要的事情。