Sql server SQL Server可以高效地插入多行

Sql server SQL Server可以高效地插入多行,sql-server,sql-insert,Sql Server,Sql Insert,我有一个旧的经典ASP应用程序,它需要在SQLServer2008表中插入数千行。目前,应用程序正在分别为每一行发送INSERT命令,这需要很长时间,同时会锁定表 有更好的方法吗?例如,可能: Insert all rows into a temp table 然后呢 SELECT INTO from the temp table ?如果要在应用程序本身中生成日期列表,则可能需要添加必要的内容才能生成这些日期 在SQLServer2008中,您可以在一个命令中插入多行,这比逐行插入要好一些

我有一个旧的经典ASP应用程序,它需要在SQLServer2008表中插入数千行。目前,应用程序正在分别为每一行发送
INSERT
命令,这需要很长时间,同时会锁定表

有更好的方法吗?例如,可能:

Insert all rows into a temp table 
然后呢

SELECT INTO from the temp table

如果要在应用程序本身中生成日期列表,则可能需要添加必要的内容才能生成这些日期

在SQLServer2008中,您可以在一个命令中插入多行,这比逐行插入要好一些

下面是几个示例,介绍了如何使用表变量来生成虚拟数据,以及使用
GETDATE()
来生成几个不同的日期(显然是在应用程序中生成的):

返回:

RowID  | MyDate
1      | 26/11/2017 10:51:49
2      | 27/11/2017 10:51:49
3      | 28/11/2017 10:51:49
4      | 29/11/2017 10:51:49
5      | 30/11/2017 10:51:49
6      | 01/12/2017 10:51:49
7      | 02/12/2017 10:51:49
RowID  | MyDate
1      | 26/11/2017 10:51:49
2      | 27/11/2017 10:51:49
3      | 28/11/2017 10:51:49
4      | 29/11/2017 10:51:49
5      | 30/11/2017 10:51:49
6      | 01/12/2017 10:51:49
7      | 02/12/2017 10:51:49
您还可以使用以下格式:

INSERT INTO @TABLE (MyDate)
SELECT GETDATE()
    UNION ALL
SELECT GETDATE() + 1
    UNION ALL
SELECT GETDATE() + 2
    UNION ALL
SELECT GETDATE() + 3
    UNION ALL
SELECT GETDATE() + 4
    UNION ALL
SELECT GETDATE() + 5
    UNION ALL
SELECT GETDATE() + 6
;

SELECT * FROM @TABLE
;
返回:

RowID  | MyDate
1      | 26/11/2017 10:51:49
2      | 27/11/2017 10:51:49
3      | 28/11/2017 10:51:49
4      | 29/11/2017 10:51:49
5      | 30/11/2017 10:51:49
6      | 01/12/2017 10:51:49
7      | 02/12/2017 10:51:49
RowID  | MyDate
1      | 26/11/2017 10:51:49
2      | 27/11/2017 10:51:49
3      | 28/11/2017 10:51:49
4      | 29/11/2017 10:51:49
5      | 30/11/2017 10:51:49
6      | 01/12/2017 10:51:49
7      | 02/12/2017 10:51:49

不是ASP专家,但如果要在应用程序中连接字符串,您应该能够连续连接字符串,而不是为每个日期重新创建一个全新的
INSERT
语句。

要插入的行的源在哪里?Sql server可以直接从CSV批量插入-此问答提到了该技术,尽管它并没有特别询问如何在应用程序本身。它生成日期列表,然后需要将其添加到表中。由于服务器限制,无法使用csv文件完成此操作。您能否创建一个存储过程,根据应用程序中的参数批量添加行?