OPENROWSET插入null

时间:2010-05-25 11:48:28

标签: sql sql-server openrowset

我正在使用它:

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')。这可能是造成这种奇怪行为的原因。感谢。

克里斯

2 个答案:

答案 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选项将解决问题。意味着性能下降,因为这意味着整个柱/表被检查,但我没有注意到任何重要的事情。