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

Azure Data Factory复制活动字符串转Decimal失败求助

解决Azure Data Factory复制活动中CSV字符串转SQL Decimal的格式错误问题

你遇到的问题核心是ADF在读取CSV里的大数值字符串时,自动将其转换为科学计数法格式,而SQL的Decimal类型无法识别这种格式导致报错。我给你整理了几个可行的解决方案:

原因分析

你的源CSV中100612324864664000.00是字符串类型,ADF自动解析时会把这个超大数字转换成1.0061232486466467E+17这种科学计数法格式的字符串,但SQL Server的Decimal列不接受这类格式的输入,因此抛出了"输入字符串格式不正确"的异常。

解决方案

1. 强制ADF保留CSV列的原始字符串格式

不要依赖ADF的自动类型推断,手动指定目标列的类型,避免被转成科学计数法:

  • 打开CSV源数据集的Schema选项卡
  • 找到xyz列,将其数据类型手动设置为String
  • 这样ADF读取时会直接保留100612324864664000.00的原始字符串格式,写入SQL Decimal列时就能正常转换

2. 用派生列活动转换科学计数法格式

如果ADF已经自动转成了科学计数法字符串,可以在复制前加一个Derived Column活动做格式转换:

  • 在数据流中插入Derived Column活动
  • 针对xyz列,使用以下表达式转换格式:
    formatNumber(toDecimal(xyz), '#.00')
    
    这个表达式会先把科学计数法字符串转为Decimal类型,再格式化为保留两位小数的普通数值字符串,确保写入SQL时格式合规

3. 确认目标SQL表的Decimal精度足够

你的源数值100612324864664000.00包含18位整数+2位小数,要确保目标列的精度能容纳这个值:

  • 将SQL表的xyz列类型设置为DECIMAL(20, 2)(总精度20位,其中小数位2位),避免因精度不足导致转换失败

验证步骤

设置完成后先跑一次测试复制,检查目标SQL表是否正确写入100612324864664000.00,同时查看ADF运行日志是否还有格式错误提示。

内容的提问来源于stack exchange,提问作者Pasupathy Devraj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:49:32