2016-12-12 146 views
1

我想使用SSIS pkg导入excel数据,但它正在更改数据类型并将其转换为其他一些带有十进制的格式。SSIS Excel数据导入 - 行中的混合数据类型

我拉从一组范围内的数据

实施例: 范围A5:AB20

我的数据列A5(M)= 1.2

SSIS导入有点像120000.0

我SSIS到进口A5 = 1.2

我试过,但我没有......

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\ABCDPrograms.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1";

原始数据从一些旧系统导入的,我不能进行更改。

请直接点击。谢谢

+0

你这是什么意思是“失败”?你有错误吗? –

回答

1

你需要使用一个派生列转换在数据流任务中的Excel电子表格和数据库之间:

Excel文件,我知道你说你的电子表格显示1.2,但我看不出有什么在细胞,所以它看起来像较大的值是什么,是在牢房里:

enter image description here

衍生改造任务,舍入值(由100000等分),以1位小数,替换列值:

enter image description here

产生的数据库条目,该列的数据类型设置为十进制(8,1)或然而,许多前述数字,你需要):

enter image description here

希望帮助

+0

谢谢TJB - 我应该已经添加了.. 第5行和第20行之前还有很多其他数据。这些值可以在工作表(甚至是其他工作表)的其他地方计算出来。 Row5-20是'链接',并显示1.2(如果点击它将显示公式与链接的单元格或工作表) 所以在现实中,它就像是废除什么显示(即1.2) –

+0

好,但它不会显示120k值正在传递给SSIS包。假设您正确识别SSIS包中电子表格中的列,并且您已正确设置SQL表,那么这应该仍然有效。 另一种可能性是,当您选择1.2列时,您错误地将其中包含120k的单元格映射到您的SQL列。在Excel电子表格上使用一些非常时髦的自定义格式来让120k看起来像1.2,而不是公式。 – TJB

+0

测试你的解决方案,会让你知道结果..谢谢TJB –