OPENROWSET преобразование номера телефона в листе Excel в десятичный формат вместо VARCHAR - PullRequest
1 голос
/ 09 июня 2011

Одним из моих полей в листе 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 Ответ

0 голосов
/ 09 июня 2011

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

Ах, да: взгляните на эту статью

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

которая ведет по этой ссылке:

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

Привет

Петр

...