我使用這樣的:OPENROWSET插入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」)。什麼可能是這種奇怪行爲的原因。謝謝。
克里斯
我使用這樣的:OPENROWSET插入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」)。什麼可能是這種奇怪行爲的原因。謝謝。
克里斯
嘗試增加「; 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選項將解決此問題。這意味着性能下降,因爲這意味着整個欄目都會被檢查,但我沒有注意到任何重要的事情。
包含神祕空值的列是否有一些純粹數值的值? – Thomas 2010-05-25 13:19:42