You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSIS导出SQL Server数据到CSV时保留两位小数的问题求助

SSIS导出CSV保留Decimal类型两位小数的解决方法

以下是几个可靠的解决思路,按实操优先级排序:

1. 数据源SQL查询直接格式化(最简便)

修改OLE DB Source的查询语句,将decimal列转换为固定两位小数的字符串后再导出,从源头确保格式正确:

  • 使用FORMAT函数(SQL Server 2012及以上支持):
    SELECT 
        列1, 列2,
        FORMAT(你的Decimal列, 'N2') AS 格式化列名
    FROM 目标表
    
  • 若担心区域设置影响(比如部分环境下FORMAT会输出逗号作为千分位),改用STR函数:
    SELECT 
        列1, 列2,
        STR(你的Decimal列, 15, 2) AS 格式化列名
    FROM 目标表
    
    其中15是列的总长度(按需调整,确保能容纳整数部分+小数点+两位小数),2是固定保留的小数位数。

之后在Flat File Destination中,将该列配置为字符串类型(DT_STR或DT_WSTR)即可。

2. 数据流中添加派生列转换

如果不想修改源查询,可在数据流任务中插入派生列组件,通过SSIS表达式将decimal列转为固定格式的字符串:

  • 新增派生列,使用如下表达式(替换你的Decimal列为实际列名):
    ISNULL(你的Decimal列) ? "0.00" : STR(你的Decimal列, 15, 2)
    
    该表达式同时处理了空值场景,确保空值也输出0.00。
  • 将派生列的输出连接到Flat File Destination,并把对应的目标列设置为字符串类型。

3. 调整Flat File连接管理器配置(需配合类型转换)

单纯修改Flat File连接的小数位数设置无效,因为数值类型写入CSV时会自动省略末尾零,必须先转为字符串:

  1. 打开Flat File连接管理器的高级选项卡
  2. 找到目标decimal列,将数据类型改为DT_STR(或DT_WSTR),设置足够的输出宽度
  3. 确保数据流中该列已被转换为字符串类型(通过上述两种方法之一),再写入目标文件

内容的提问来源于stack exchange,提问作者Vanshika Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 11:44:51