使用Copy Activity迁移数据时,字符串格式日期/时间列转Datetime报错求助
解决Copy Activity迁移日期/日期时间格式不兼容问题
问题分析
源数据里的日期时间格式2023-02-20-12.07.12.861826不符合SQL Server Datetime类型的默认解析规则,同时空值也可能触发转换报错,需要针对性做格式转换处理。
解决方案
1. 使用数据流动(Data Flow)替代直接Copy Activity(推荐)
在数据流动中添加派生列,对日期和日期时间列做格式转换:
- 处理日期列:判断空值后转换为日期类型
iif(isNull(日期列), toDate(null), toDate(日期列, 'yyyy-MM-dd')) - 处理日期时间列:先替换分隔符为标准格式,再转换为Datetime类型
说明:iif(isNull(日期时间列), toTimestamp(null), toTimestamp(replace(日期时间列, '-', ' ', 3), 'yyyy-MM-dd HH.mm.ss.SSSSSS'))replace(日期时间列, '-', ' ', 3)会把第3个-替换为空格,将2023-02-20-12.07.12.861826转为2023-02-20 12.07.12.861826,再通过toTimestamp按指定格式解析。
2. 在Copy Activity中配置映射规则+自定义格式
- 打开Copy Activity的映射标签页,找到目标日期、日期时间列,点击列旁的编辑图标
- 日期列:设置源类型为
String,目标类型为Datetime,指定源格式为yyyy-MM-dd - 日期时间列:设置源类型
String,目标类型Datetime,自定义源格式为yyyy-MM-dd-HH.mm.ss.SSSSSS注意:部分版本的Copy Activity对自定义格式支持有限,若此方法无效,优先采用数据流动方案。
3. 空值处理
如果源列存在空值,需确保映射时允许空值传递到目标表,或在转换逻辑中显式处理空值场景,避免因空值无法转换报错。
内容的提问来源于stack exchange,提问作者sunitha v
相关产品推荐
相关产品推荐

