首页 文章

SSIS将脏/失败的行移动到文件或表

提问于
浏览
0

我有一个SSIS包,它将数据从一台服务器上的SQL SERVER 2008 TABLE(表A)获取到另一台服务器上的SQL SERVER 2008表(表B),然后转换数据并将其移动到另一个表 .

我正在使用数据流任务来执行上述操作 . 两个表中的2列,第1列和第2列的数据类型分别是varchar(60)和varchar(50) .

我需要将表B中的数据作为临时表导入到最终表(表C) . 上面2列的数据类型在表C中是int类型 . 我将上面的2列转换为int数据在导入数据时输入,我有一个数据流任务,其中OLEDB源具有以下查询:

从表B中选择CAST(COLUMN1 AS INT),COLUMN2 AS INT)

你好

我有2个SQL表,即OLEDB数据源,一个具有正确的行(已成功转换为int)通过绿色箭头,另一个具有错误的行(抛出错误)通过红色箭头 . (它配置要仅在转换错误时重定向行,当发生截断错误时它具有“失败的组件”选项)oledb目标表具有与源表相同的结构 .

当我运行将数据从源表导入到目标表的数据流任务时,我收到错误“转换规范的无效字符值”或数据转换错误 . 我不希望它抛出错误,而是将错误的行重定向到与目标表具有相同结构的错误表,具有相同结构的源表具有错误号和列名

使用数据转换任务并重定向错误行是不是一个好主意,通过在转换时配置错误输出以及截断或仅转换,或仅在发生转换错误时转换值和重定向行?

1 回答

  • 0

    由于SQL引擎中发生CAST错误,因此无法使用SSIS重定向这些行 . 我会使用数据转换任务并重定向错误行 .

    FWIW我不是“错误表”的粉丝 - 根据我的经验,没有人会看到它们 . 我更喜欢“激进的负载”风格(即使名称很酷),你强行所有行,并让分析师解释差异 . 他们很快就解决了严重问题,因为他们扭曲了结果 . 总会有一个低级别的琐碎错误,最好不要挂断,生命如此短暂而且......

相关问题