我有一个2005 SQL Server Integration Services(SSIS)包,它将分隔的平面文件加载到某些表中。很少一部分记录的文本字段更长比文件格式规范所说的那样。客户要求我只是截断规格中超出尺寸的任何东西,而不是尝试正在进行“猜测实际最大长度”的持续游戏。
我在平面文件源编辑器中将Trunctation事件设置为“忽略失败”,并处理我的额外数据。但是,它似乎是一个完全无声的截断(它不会向日志写任何警告)。我担心如果有关于哪些数据被截断的问题,我无法识别它。
记录截断事件的简单方法是什么?
确定文件中有一个截断的行就足够了,但是如果我还可以指定实际的行会很好。无论是作为内置软件包日志记录的一部分捕获还是我必须进行特殊调用,对我来说都没有任何区别。
答案 0 :(得分:1)
在执行实际插入之前,有一个条件拆分任务,它将记录长于实际字段长度并将它们放入日志记录表中。然后,您可以使用合并或合并连接转换截断数据并将它们重新加入原始路径。
答案 1 :(得分:0)
您可以自己进行截断,作为数据流的一部分。将平面文件列宽设置为非常大的值(大于任何预期值)。您可以使用条件拆分来标识违反长度的行。
在无效行的数据流路径中,您可以将信息记录到日志中。然后,您可以将值转换为有效长度,并将它们与有效行合并。最后,将行添加到目的地。