1

我在 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 中)

我尝试了一些 Cast 和 convert 功能,但似乎没有任何效果。有人可以告诉我我能做些什么来解决它吗?

4

1 回答 1

0

我记得的驱动程序对数据类型做了一些有趣的技巧。它试图从电子表格的前 8 行或 9 行中的数据中估计正确的数据类型。您可能最好将数据从 excel 导出到 CSV 文件并使用 bcp 甚至 openrowset 加载,但使用 csv 驱动程序。

啊是的:看看这篇文章

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

这导致了这个链接:

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

问候

彼得

于 2011-06-08T22:15:20.847 回答