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
С уважением
Петр