我需要将表数据插入另一个表中。在不保证源表正确地具有所有行的情况下,其中一些非空字段具有空值。因此,对于此源表,我需要在表中输入所有有效行,并查找无法插入和返回的所有无效行。
我知道我们可以通过事先验证所有行来做到这一点。但是因为这是来自csv的批量插入,并且由.net代码解析,所以从db我们不会验证它,而是直接输入。
我们也可以通过循环执行此操作但性能可能会受到影响。
所以我的问题是我们可以使用单个语句来插入和跳过有问题的插入行和插入有效的任何方法。
答案 0 :(得分:0)
BULK INSERT是全有或全无。 SQL Server无法将错误的行分流到单独的表中,唉。
您可以做的最好的事情是在插入之前彻底验证所有数据。如果插入仍然失败(可能是由于错误),您需要逐个重试所有行并记录正在发生的错误。
您还可以批量插入临时表并将行从那里逐行移动到最终表。