0

私はこれを使用しています:

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')。この奇妙な行動の理由は何でしょうか。ありがとう。

クリス

4

2 に答える 2

2

「;IMEX= 1」を追加してみてください(すべてのフィールドをテキストとして読み取るために、これは値とテキストの混合に関係している可能性があります)。

2番目のオプションは、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 に答える