需要一些帮助... 我有excel格式化的数据。例33.257615111显示为33.258(三十三百二十五万八千)
我正在尝试使用SSIS ETL将数据文件导入SQL。有没有办法在ETL过程中将其转换为带小数点后2位数的数字?即33257615.11
谢谢
答案 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正在做的事情。它显示你是一个四舍五入的数字,但在幕后是完整的值。为了格式化,不要降低精度。