Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSIS:不导入列数不正确的行_Ssis - Fatal编程技术网

SSIS:不导入列数不正确的行

SSIS:不导入列数不正确的行,ssis,Ssis,我在SSIS 2008工作。我有一个非常简单的数据流任务,它将平面文件导入到OLEDB表中。平面文件有10列,它们都映射到表中相应的列中。平面文件列分隔符是管道字符,行分隔符是{CR}{LF},并且没有标题。在平面文件源上,我将Error和Truncation上所有10列的有问题的行重新定向到一个错误输出平面文件 我每天都运行这个数据流任务,但是我不能保证平面文件的每个记录都有10列。因此,因为SSIS至少有一个坏习惯,在我看来,使用行分隔符作为最后定义的列的列分隔符,然后它尝试合并行。这意味着

我在SSIS 2008工作。我有一个非常简单的数据流任务,它将平面文件导入到OLEDB表中。平面文件有10列,它们都映射到表中相应的列中。平面文件列分隔符是管道字符,行分隔符是{CR}{LF},并且没有标题。在平面文件源上,我将Error和Truncation上所有10列的有问题的行重新定向到一个错误输出平面文件

我每天都运行这个数据流任务,但是我不能保证平面文件的每个记录都有10列。因此,因为SSIS至少有一个坏习惯,在我看来,使用行分隔符作为最后定义的列的列分隔符,然后它尝试合并行。这意味着,如果列数不足,则并非所有行都将作为单独的行导入表中。这还意味着有问题的行不一定会写入错误输出平面文件

目前,仅有两种情况:1文件将具有所需的列数,2文件列数不足。我还没有看到一个列数超过预期的文件。因为这个文件是在我的单元测试过程中使用的,所以我不想预处理这些文件以获得正确的列数。我希望有问题的行写入错误输出平面文件,或者,如果不是错误输出平面文件,至少写入其他平面文件,并且不被导入。我仍然希望导入具有正确列数的行。我怎样才能做到这一点

但是我不能保证平面文件总是有10列 每一张唱片

依我看,这是SSIS的交易破坏者,因为它需要源和目标之间的契约才能正常工作。为了避免任何错误的风险,或者在错误的列中包含数据,我建议将整行作为一个非常大的varchar列导入,然后使用T-SQL将其“解析”到10列中,检测缺陷,并优雅地处理它们