在SSIS中转换数字格式
Convert number format in SSIS
需要一些帮助..
我有 excel 格式化的数据。示例 33.257615111 显示为 33.258(三千三百二十五万八千)
我正在尝试使用 SSIS ETL 将数据文件导入 SQL。有没有一种方法可以在 ETL 过程中将其转换为带 2 位小数的数字?即 33257615.11
谢谢
这是可以做到的。使用派生列和 ROUND()
表达式。
在您的数据流中,在 Excel 文件源组件和 OLE DB 目标组件之间,添加一个派生列组件。在 Derived Column 组件中创建一个四舍五入值的新列。
(DT_NUMERIC,25,2)ROUND(MyColumnName, 2)
将上面这个新的派生列映射到您的 SQL 目的地,我们都准备好了。
但是! 您确定要在数据库中存储四舍五入的数字吗?
您是否需要对这一列求和?如果是这样,四舍五入的值将产生与非四舍五入的值截然不同的总数。也许,不要在 SSIS 中进行舍入,而是存储完整的数字。让读取此数据的应用程序进行格式化。就这么简单。
SELECT ROUND(MyColumnName,2) AS MyColumnName
FROM MyTable
在multitier architecture中,数字的格式应该留给显示层,而不是数据层。这正是 Excel 正在做的事情。 向您显示 一个四舍五入的数字,但在幕后是完整的值。不要为了格式化而降低精度。
需要一些帮助.. 我有 excel 格式化的数据。示例 33.257615111 显示为 33.258(三千三百二十五万八千)
我正在尝试使用 SSIS ETL 将数据文件导入 SQL。有没有一种方法可以在 ETL 过程中将其转换为带 2 位小数的数字?即 33257615.11
谢谢
这是可以做到的。使用派生列和 ROUND()
表达式。
在您的数据流中,在 Excel 文件源组件和 OLE DB 目标组件之间,添加一个派生列组件。在 Derived Column 组件中创建一个四舍五入值的新列。
(DT_NUMERIC,25,2)ROUND(MyColumnName, 2)
将上面这个新的派生列映射到您的 SQL 目的地,我们都准备好了。
但是! 您确定要在数据库中存储四舍五入的数字吗?
您是否需要对这一列求和?如果是这样,四舍五入的值将产生与非四舍五入的值截然不同的总数。也许,不要在 SSIS 中进行舍入,而是存储完整的数字。让读取此数据的应用程序进行格式化。就这么简单。
SELECT ROUND(MyColumnName,2) AS MyColumnName
FROM MyTable
在multitier architecture中,数字的格式应该留给显示层,而不是数据层。这正是 Excel 正在做的事情。 向您显示 一个四舍五入的数字,但在幕后是完整的值。不要为了格式化而降低精度。