SSIS 平面文件目标生成的数字比数据库中的数字多

问题描述 投票:0回答:1

我有一个简单的 SSIS 包,可以从 SQL 视图创建平面文件。视图中的数据是两位数,例如 391.61,但当 SSIS 创建平面文件时,它会转换为 391.61000000000001。有什么我错过的吗?

sql-server ssis
1个回答
0
投票

要纠正这个问题,您需要修改提取数据的机制。在 OLE/ADO/ODBC 源中,从表或视图名称更改它并编写等效查询并按预期显式调整数据。

之前 - 表或视图名称

dbo.MyTable

之后 - 直接查询(名称近似)

SELECT X.Col1, X.Col2, CAST(Col3 AS decimal(7,2)) AS Col3 FROM dbo.MyTable AS X;

其中Col3是需要强制转换的列。

您可以使用数据转换组件或派生列组件来完成此操作,但在将数据带入数据流之前对数据进行整形要干净得多。

需要注意的另一件事是,SSIS 可能会也可能不会“听到”元数据的更改 - 基于新列宽是否适合旧列宽。我认为浮点数可以容纳小数。从表或视图名称切换到查询可能足以重置元数据,否则使用像 SELECT 1 as FooBarBlee 这样的查询并单击“确定”。观察所有下游组件均显示红色 X。将该查询替换为正确的查询,现在您的列名称和元数据已更正,您应该可以了。

如果没有,那么您需要检查平面文件连接管理器的定义。在“列”选项卡上,检查 Col3 并查看其定义方式并根据需要进行调整。

© www.soinside.com 2019 - 2024. All rights reserved.