首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SSIS中高效地批量导入数据,偶尔会有PK重复内容?

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

Stack Overflow用户
提问于 2011-01-21 01:46:03
回答 2查看 3.2K关注 0票数 2

我定期加载一个平面文件与100k记录到一个表中经过一些转换。该表有两列主键。数据总体上不包含重复的主键信息,但偶尔会有重复的情况。

我天真地不明白为什么SSIS拒绝我所有的记录,而只有一些记录违反了PK约束。我认为问题在于,在大容量装载期间,即使只有1行违反了PK约束,该批处理中的所有行都会被拒绝。

如果我将OLE Db目标的FastLoadMaxInsertCommitSize属性更改为1,If会修复问题,但随后它会像狗一样运行,因为它每提交一行。

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

任何帮助都非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-21 17:51:26

听起来你可能在找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个非重复的键值将插入到表中。

票数 5
EN

Stack Overflow用户

发布于 2011-01-21 17:23:50

您可以提高FastLoadMaxInsertCommitSize的速度,说5k...this将大大加快插入速度。然后,设置错误输出以重定向这些行-在错误输出中,将包含错误行的5k行批量发送到另一个目的地。(下一位来自内存!)如果您将其设置为不是快速加载,那么它将插入正确的行,您可以将错误输出传递到错误表或类似于行计数任务的内容。

您可以尝试使用FastLoadMaxInsertCommitSize图形,直到找到适合您的图形。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4750610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档