在SSIS中有效批量导入数据,偶尔会出现PK重复内容?

All*_*n G 2 ssis flat-file sql-server-2008

经过一些转换后,我会定期将带有100k记录的平面文件加载到表中.该表在两列上有一个PK.整体数据不包含重复的PK信息,但偶尔会有重复数据.

我天真地不明白为什么SSIS拒绝我的所有记录时只有一些人违反了PK约束.我认为问题在于,在批量加载期间,即使其中一行违反PK约束,该批次中的所有行都会被拒绝.

如果我将OLE Db Destination的FastLoadMaxInsertCommitSize属性更改为1,如果修复了问题,但它会像狗一样运行,因为它每1行提交一次.

在MySQL中,批量加载工具允许您忽略PK错误并跳过这些行而不会牺牲性能.有谁知道在SQL Server中实现这一目标的方法.

任何帮助非常感谢.

Mar*_*ith 5

听起来你可能正在寻找IGNORE_DUP_KEY

使用IGNORE_DUP_KEY选项处理重复值

创建或修改唯一索引或约束时,可以将IGNORE_DUP_KEY选项设置为ON或OFF.此选项指定在创建索引后在多行INSERT语句中复制键值的错误响应.当IGNORE_DUP_KEY设置为OFF(缺省值)时,当一个或多个行包含重复键值时,SQL Server数据库引擎会拒绝语句中的所有行.设置为ON时,仅拒绝包含重复键值的行; 添加非重复键值.

例如,如果单个语句在具有唯一索引的表中插入20行,并且其中10个行包含重复的键值,则默认情况下拒绝所有20行.但是,如果索引选项IGNORE_DUP_KEY设置为ON,则仅拒绝10个重复键值; 其他10个非重复键值将插入表中.