OPENROWSET вставляет ноль - PullRequest
0 голосов
/ 25 мая 2010

Я использую это:

insert into bla select * 
FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;HDR=YES;Database=c:\bla.xls',
    'select * from [Sheet1$]');

, но по некоторым причинам некоторые значения содержат ноль, хотя исходные данные определенно содержат значения (например, 'abc'). В чем может быть причина этого странного поведения. Спасибо.

Chris

Ответы [ 2 ]

2 голосов
/ 25 мая 2010

Попробуйте добавить «; IMEX = 1» (чтобы прочитать все поля как текст - это может быть связано со смешиванием значений и текста).

Второй вариант - попытаться установить компоненты подключения к данным Office (из *)1003 *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$]');

Удачи!

0 голосов
/ 01 марта 2013

Я обнаружил, что установка Hkey_Local_Machine / Software / Microsoft / Jet / 4.0 / Engines / Excel / TypeGuessRows в ноль и использование опции IMEX = 1 решит проблему. Предполагается снижение производительности, поскольку это означает, что проверяется весь столбец / лист, но я не заметил ничего значимого.

...