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 - 在平面文件目标中导出为指数值的浮点值的主要内容,如果未能解决你的问题,请参考以下文章