我正在使用这个:
insert into bla select *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;Database=c:\bla.xls',
'select * from [Sheet1$]');
但是由于某种原因,尽管原始数据肯定包含值(例如'abc'),但某些值包含null。这种奇怪行为的原因可能是什么。谢谢。
克里斯
我正在使用这个:
insert into bla select *
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;HDR=YES;Database=c:\bla.xls',
'select * from [Sheet1$]');
但是由于某种原因,尽管原始数据肯定包含值(例如'abc'),但某些值包含null。这种奇怪行为的原因可能是什么。谢谢。
克里斯
尝试添加“;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$]');
祝你好运!
我发现将 Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows 设置为零并使用 IMEX=1 选项可以解决问题。这意味着性能会下降,因为这意味着检查了整个列/工作表,但我没有注意到任何重要的事情。