0

我需要将一个表数据插入到另一个表中。不能保证源表的所有行都正确,其中一些非空字段具有空值。因此,对于这个源表,我需要将所有有效行输入到表中,并找到所有无法插入并返回它们的无效行。

我知道我们可以通过事先验证所有行来做到这一点。但由于这是来自 csv 的批量插入并由 .net 代码解析,因此我们不会从 db 验证它,而是直接输入。

我们也可以通过运行循环来做到这一点,但性能可能会受到影响。

所以我的问题是我们可以使用单个语句插入和跳过有问题的行和插入有效的任何方式。

4

1 回答 1

0

BULK INSERT 是全有或全无。唉,SQL Server 没有能力将错误的行分流到单独的表中。

您可以做的最好的事情是在插入之前彻底验证所有数据。如果插入仍然失败(可能是由于错误),您需要一一重试所有行并记录正在发生的错误。

您还可以批量插入临时表并将行从那里逐一移动到最终表。

于 2013-08-29T12:37:14.237 回答