SSIS 2008 - 在平面文件目标中导出为指数值的浮点值

Posted

技术标签:

【中文标题】SSIS 2008 - 在平面文件目标中导出为指数值的浮点值【英文标题】:SSIS 2008 - Float value exported to exponential value in Flat file destination 【发布时间】:2021-08-18 13:12:52 【问题描述】:

我正在尝试将表导出到平面文件目标。浮点列值 (0.0911780821917808) 导出到平面文件中的 9.1178082191780821E-2。

表格 创建表测试 ( col1 浮动 )

Col1 0.0911780821917808

将此表导出到平面文件目标。但是导出到 .txt 文件中的值“9.1178082191780821E-2”。但是在 OLE DB Source 之后,DataViewer 中会出现正确的值。

请指导将值原样导出到平面文件。

提前感谢您的所有时间

问候,

斯大林

【问题讨论】:

【参考方案1】:

我之前也遇到过类似的问题,并且被证明是最安全的方法是通过 STR 函数从源代码转换为字符串。例如,您可以使用如下 SQL 查询读取 OLEDB 源中的表:

SELECT LTRIM(STR(col1,25,18) ) Col1casted
FROM
TEST

那么您可能需要重新创建平面文件目标(或更改数据类型)

在此示例中,我将转换后的值设置为 25 长,其中 18 位是小数,但您可以进行调整以确保它涵盖表中的值范围。

对于甲骨文:

SELECT TO_CHAR(0.0911780821917808267712341,'9D9999999999999999') FROM DUAL;

以上格式设置为16位小数,以sql fiddle为例

https://dbfiddle.uk/?rdbms=oracle_11.2&fiddle=487fe7bf6cf3a2264f988523e5ac7a3d

【讨论】:

非常感谢。我正在使用 Oracle 数据库。你能告诉我Oracle中的等效函数是什么吗? 我尝试通过 TO_CHAR(field) 查询该字段。它以“.091178082191780821917808219178082191781”的形式出现 底层表字段是数字字段,没有精度和比例。所以我需要将值原样导出到平面文件。 是的,TO_CHAR 应该可以工作,您也可以设置格式。这个长数字可能是Oracle内部实际存储的,您可以这样保留或根据业务需要设置小数位数。我已经用一个例子更新了答案。

以上是关于SSIS 2008 - 在平面文件目标中导出为指数值的浮点值的主要内容,如果未能解决你的问题,请参考以下文章

SSIS“数据流任务”平面文件目标中没有记录

SSIS:使用变量作为平面文件目标的名称

防止平面文件目标中的重复标题 - SSIS

如何将SSIS变量包含在平面文件目标中的标题行中

在 SSIS 中将 ODBC DB2 源转换为平面文件错误

SSIS条件拆分为平面文件目的地