SQL Server - 在SQL脚本中插入2M+条记录,每次插入7000行
在SQL接口中,没有一种原生的方法可以克服INSERT的限制。您需要创建一个编程解决方案。我在评论中列出了一些技术,如Python、PowerShell和.NET。您可以使用BCP、BULK INSERT、SSIS或其他一些BI工具来拼凑一个解决方案。以下是一些关于使用C#批量插入大型数据集的链接:
Insert 2 million rows into SQL Server quickly
Bulk inserting with SQL Server (C#)
另外还有一个类似的问题在这里提出,接受的答案建议使用SQL Server Import Wizard:
问题的原因是在SQL Server中,使用INSERT语句一次插入超过1000行记录时会出现性能问题。解决这个问题的方法有两种。
第一种方法是使用UNION ALL SELECT技巧来进行插入,因为每次只插入7000行记录,不会出现性能问题。这种方法通过将多个SELECT语句使用UNION ALL连接起来,然后将结果插入到目标表中。示例如下:
INSERT INTO Table1 (ValueA, ValueB)
SELECT 1, 2
UNION ALL SELECT 3,4
UNION ALL SELECT 5,6;
这样做的好处是不再受VALUES子句1000行限制的限制。
第二种方法是在每个INSERT语句中使用INSERT INTO TABLE语句,如Stackoverflow的帖子中所提到的。这种方法是将每个INSERT语句作为一个独立的INSERT INTO TABLE语句执行。这样做的好处是可以避免性能问题,但是需要手动编写多个INSERT INTO TABLE语句。