0

我正在使用这个:

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。这种奇怪行为的原因可能是什么。谢谢。

克里斯

4

2 回答 2

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$]');

祝你好运!

于 2010-05-25T13:32:02.563 回答
0

我发现将 Hkey_Local_Machine/Software/Microsoft/Jet/4.0/Engines/Excel/TypeGuessRows 设置为零并使用 IMEX=1 选项可以解决问题。这意味着性能会下降,因为这意味着检查了整个列/工作表,但我没有注意到任何重要的事情。

于 2013-02-28T21:30:14.767 回答