SSIS问题:无法将Excel源中的空列迁移至SQL Server
SSIS Excel源空列类型不匹配问题解决办法
遇到Excel源全空列被识别为DT_WSTR,和目标DT_NUMERIC类型冲突导致的转换错误,试试这几个方案:
方案1:强制Excel连接管理器的类型识别规则
打开Excel连接管理器的属性,找到Extended Properties,在原有配置后追加:
;IMEX=1;TypeGuessRows=0
TypeGuessRows=0会让Excel驱动扫描所有行判断列类型,避免全空列被误识别为文本IMEX=1确保混合类型列按文本处理,配合前者能让全空列更准确地被识别为数值类型
方案2:手动修改Excel源的输出元数据
- 双击Excel源进入编辑器,切换到Advanced标签
- 找到目标空列,直接把它的
Data Type改成和目标一致的DT_NUMERIC(注意匹配目标列的精度和小数位数) - 保存后重新运行包,强制SSIS用指定类型读取该列,空值会自动转为
NULL
方案3:用派生列生成NULL值映射目标
- 在Excel源和OLE DB目标之间添加Derived Column组件
- 新增派生列,表达式写
NULL(DT_NUMERIC, 精度, 小数位),比如目标列是DT_NUMERIC(18,2)就写NULL(DT_NUMERIC,18,2) - 把这个派生列直接映射到OLE DB目标的对应列,忽略原来的空列
方案4:临时修改Excel文件(若允许)
- 在Excel的空列里随便填一个数值(比如0),保存文件
- 重新配置Excel源,此时驱动会识别该列为数值类型
- 运行包前删掉Excel里的临时数值,SSIS的元数据已经是数值类型,空值会被正确识别为
NULL上传
内容的提问来源于stack exchange,提问作者Ankit Das
相关产品推荐
相关产品推荐

