SQL Server - 在SQL脚本中插入2M+条记录,每次插入7000行

12 浏览
0 Comments

SQL Server - 在SQL脚本中插入2M+条记录,每次插入7000行

我正在寻找解决SQL Server中每次插入限制为1000行的方法的建议。

我有一个MySQL导出脚本,其中有几个100行,每行都是一个包含大约7000行的插入语句。

由于每次插入限制为1000行,我无法直接将其插入到SQL Server中。

是否有任何"简单"的解决方法,或者唯一的方法是通过编程识别行并为每行创建插入语句?

0
0 Comments

在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:

Import Wizard - Bulk Insert

0
0 Comments

问题的原因是在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语句。

0