我们要求在表格中插入大量记录(约2至3百万)。但是,我们应该能够将无效记录(主键,外键和非空违规)验证并隔离到单独的错误表中供以后参考。根据我的研究,SQL服务器中的批量插入适用于插入,但我无法找出过滤掉坏数据记录的最佳方法。在帮助之间有一个临时表吗?虽然我们可以使用针对登台表的某些队列来检查违规行为,但我们必须使用另一个插入 - 通过插入选择或合并 - 将好记录加载到实际表中,但这是一种有效的方法吗?我担心它会像2x插入一样。
我打算使用.net sqlbulkcopy进行批量插入,并且它也没有明确的错误报告。
有人能指出我更有效的解决方案吗?
编辑:如果这种方法是唯一的解决方案,您认为哪种方法最适合第二次插入?是插入...选择还是合并?它们是否符合BULK INSERT的效率和速度?或者还有其他更好的选择吗?
谢谢!
答案 0 :(得分:1)
就个人而言,我不会认为2 / 3M记录数量很大。 除非您在几秒钟内需要数据,否则单个(非批量)插入将充分发挥作用。
如果我对src数据质量感到紧张 - 我想首先加载到stg表然后执行“Soft RI” - 使用SQL检查PK,UQ,FK等。 如果我担心数字/非数字或错误的日期类型问题,那么我为所有cols制作Stg表VARCHAR(8000),并在从表中读取时使用TRY_CONVERT。
一旦数据进入STG,您就可以轻松过滤好行并详细报告坏行。