OPENROWSET преобразование номера телефона в листе Excel в десятичный формат вместо VARCHAR

Одним из моих полей в листе Excel является номер телефона, и когда я выполняю массовый импорт с использованием openrowset и вставляю его в поле varchar(50), он преобразуется в десятичный формат.

Это то, что я делаю:

CREATE TABLE dbo.TmpDataFileCC
 (
     field_1 VARCHAR(500) NULL
    ,Field_2 VARCHAR(500) NULL
    ,Phone1 VARCHAR(500) NULL 
 )

Insert into TmpDataFileCC(field_1,Field_2,Phone1)
SELECT F1,F2,F3 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=J:\UploadToSQL\test_file.xls;HDR=NO', 'SELECT * FROM [sheet1$]')
where F3 is not null

Номер телефона 3234406751 (в файле Excel) преобразуется в 3.23441e+009 (в TmpDataFileCC_ftb)

Я пробовал некоторые функции преобразования и преобразования, но, похоже, ничего не работает. Может кто-нибудь, пожалуйста, скажите мне, что я могу сделать, чтобы решить это?

1 ответ

Драйвер из того, что я помню, делает несколько забавных трюков с типами данных. Он пытается оценить правильный тип данных из данных в первых восьми или девяти строках электронной таблицы. Возможно, было бы лучше экспортировать данные из Excel в файл CSV и загружать их с помощью bcp или даже openrowset, но с использованием драйвера csv.

Ах, да: посмотрите на эту статью

http://support.microsoft.com/kb/321686

что приводит к этой ссылке:

http://support.microsoft.com/kb/194124/EN-US

С уважением

Петр

Другие вопросы по тегам