如何在ms-sql中一次在表中插入超过50000行...?

时间:2016-05-02 09:40:49

标签: sql sql-server

它是一个查询页面,由50000个查询组成。所有查询都是插入查询。 例如: -

CREATE TABLE states (
  id int primary key NOT NULL,
  name varchar(30) NOT NULL,
  country_id int NOT NULL ,  
) 

INSERT INTO states (id, name, country_id) VALUES
(1, 'Andaman and Nicobar Islands', 101),
(2, 'Andhra Pradesh', 101),
(3, 'Arunachal Pradesh', 101),
(4, 'Assam', 101),
(5, 'Bihar', 101),
(6, 'Chandigarh', 101),
(7, 'Chhattisgarh', 101),
so - on .....

1 个答案:

答案 0 :(得分:2)

当插入大量行(实际上是1000多行)时,通常更好地使用BULK INSERT。

BULK INSERT可以用作SQL语句(https://msdn.microsoft.com/en-us/library/ms188365.aspx),也可以在使用SqlBulkCopy对象(https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy(v=vs.110).aspx)时使用代码,例如从.NET应用程序使用。

使用BULK INSERT减少客户端和服务器之间的乒乓数量,允许使用最小日志记录(在特定条件下,最重要的是数据库将采用Bulk-Logged恢复模式,这对点有影响 - 及时恢复)并且通常提供更好的性能。

BULK INSERT还允许您轻松地从CSV导入数据。您可以使用作为SQL Server一部分安装的“导入和导出数据”wizzard从各种数据源导入数据。在幕后,它使用了使用BULK INSERT的bcp。