在SSIS中转换数字格式

时间:2017-01-07 04:26:23

标签: sql ssis formatting etl

需要一些帮助... 我有excel格式化的数据。例33.257615111显示为33.258(三十三百二十五万八千)

我正在尝试使用SSIS ETL将数据文件导入SQL。有没有办法在ETL过程中将其转换为带小数点后2位数的数字?即33257615.11

谢谢

1 个答案:

答案 0 :(得分:0)

这可以做到。使用派生列和ROUND()表达式。

在Dataflow内部,在Excel文件源组件和OLE DB目标组件之间添加派生列组件。在Derived Column组件内部创建一个用于舍入值的新列。

(DT_NUMERIC,25,2)ROUND(MyColumnName, 2)

将上面的新Derived Column映射到您的SQL目标,我们都已设置好。

但是! 您确定要在数据库中存储舍入的数字吗?

您是否需要总结此专栏?如果是这样,舍入值将产生与非舍入值非常不同的总和。也许,不要在SSIS中进行这种舍入,而是存储完整的数字。让读取此数据的应用程序进行格式化。它同样容易。

SELECT ROUND(MyColumnName,2) AS MyColumnName
FROM MyTable  

multitier architecture中,数字的格式应该留给显示层,而不是数据层。这正是Excel正在做的事情。它显示你是一个四舍五入的数字,但在幕后是完整的值。为了格式化,不要降低精度。