如何让ADF复制数据活动将带双引号的CSV空串转为null?
解决ADF复制CSV(带双引号限定符)时日期列空串转SQL datetime null的问题
以下是几种无需移除双引号限定符、无需修改目标列类型的可行方案:
方案1:在复制活动映射中添加表达式转换
- 打开复制活动的映射标签,确保已正确导入源和目标列的架构
- 找到目标端的日期列,点击列名右侧的表达式生成器按钮
- 输入以下表达式(替换
your_date_column为实际列名):
该表达式会判断列值是否为空串,若是则返回null,否则转为datetime类型iif(trim(your_date_column) == "", null(), toDateTime(your_date_column)) - 保存配置后重新运行复制活动,空串将被自动转为SQL的datetime null值
方案2:配置CSV源的空值解析规则
- 打开Blob存储的CSV数据集配置,切换到Advanced标签
- 在Null value输入框中填入
""(双引号包裹的空串) - 确认源配置中的Quote character已设置为双引号(
") - 重新运行复制活动:此时源文件中的
""会被直接解析为null,而非空串,可直接写入SQL的datetime列
方案3:用数据流活动实现更灵活的转换
如果复制活动的映射无法满足需求,可改用数据流:
- 创建数据流活动,源选择Blob的CSV数据集,设置
Quote character为双引号 - 添加Derived Column转换组件,对日期列编写转换逻辑:
your_date_column == "" ? null() : toTimestamp(your_date_column) - 目标选择SQL数据集,对应目标datetime列,运行数据流即可完成空串转null的同步
内容的提问来源于stack exchange,提问作者Cláudio Rocha Júnior
相关产品推荐
相关产品推荐

