将Excel导入到带有混合列的SQL中 – 大数字包含E +

我正在通过导入向导将Excel文档导入到SQL表中。 我的表格包含许多列,其中有一些列包含电话号码,以及相当长的数字/字母标识符(10个数字)。

一旦导入Excel文档,这些数字就会被修改。 例如:22222222222222200000在SQL数据库中存储为2.22222E + 19。

我已经尝试在Excel中格式化string,一般,整数等,但似乎并不重要。 当列设置为整数时,它们在Excel中准确显示数字,但在导入时,它们被修改为包含E +。

上传时,导入向导自动假定这些列是“浮动”,我也试着将它们改为nvarchar。 导入仍然会修改大量的数据。

有没有办法像Excel中那样导入这些值?

我以前见过这个问题,这是Excel问题,而不是SSIS。 Excel对前几行进行采样,然后即使将其显式设置为文本,也会推断数据types。 你需要做的是把它放到SSIS包中的Excel文件连接string中。 这个指令告诉Excel列中包含混合的数据types,并提示它做额外的检查,然后再决定该列是一个数字types,而事实上并不是这样。

;Extended Properties="IMEX=1" 

它应该与此(在大多数情况下)。 要做的更安全的事情是将Excel数据导出到制表符分隔的文本并使用SSIS导入。

有一个选项可以将列的映射编辑为您select的数据types。 它正处于向导的最后阶段之一。 注意不要因为数据转换而在电话号码的开始处丢掉0,这可能会让你很想念你