首次构建SSIS包:源无目标表对应列的映射问题求解
解决SSIS目标表额外列映射异常的可行方案
方案1:修改源视图补充对应列
- 若目标表额外列允许为空,直接在源视图中添加这些列并赋值为
NULL,示例SQL:SELECT 原有列1, 原有列2, NULL AS 额外列1, NULL AS 额外列2 FROM 原视图 - 若额外列有固定默认值,可在视图中直接赋予对应值,确保源与目标的列数、列名匹配,消除映射异常。
方案2:在数据流中添加派生列组件
- 在源组件和目标组件之间插入派生列转换组件,针对目标表的额外列设置对应值:
- 允许为空的列,直接派生
NULL; - 有固定默认值的列,派生固定值(比如
GETDATE()生成时间戳、特定字符串常量); - 需要动态计算的列,编写表达式生成对应值。
- 允许为空的列,直接派生
- 派生完成后,将新生成的列与目标表的额外列完成映射即可。
方案3:调整目标表列属性
- 若额外列属于冗余列且业务允许,直接删除目标表中的这些列;
- 若需保留列,可为其设置默认值约束,同时在SSIS目标组件中取消这些列的映射,让数据库自动填充默认值。注意需确认目标组件的“保留空值”等相关配置正确,避免插入时报错。
方案4:使用自定义SQL命令写入目标
- 在SSIS目标组件中选择“SQL命令”模式,编写自定义
INSERT语句,仅插入源视图存在的列,忽略目标表的额外列,示例:INSERT INTO 目标表(列1, 列2) VALUES (?, ?) - 只需确保SQL语句中的占位符与源列的映射对应即可,无需严格匹配源和目标的列数。
内容的提问来源于stack exchange,提问作者user2721794
相关产品推荐
相关产品推荐

