我有一个简单的 SSIS 包,可以从 SQL 视图创建平面文件。视图中的数据是两位数,例如 391.61,但当 SSIS 创建平面文件时,它会转换为 391.61000000000001。有什么我错过的吗?
要纠正这个问题,您需要修改提取数据的机制。在 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。将该查询替换为正确的查询,现在您的列名称和元数据已更正,您应该可以了。