Sql server SQL Server可以高效地插入多行
我有一个旧的经典ASP应用程序,它需要在SQLServer2008表中插入数千行。目前,应用程序正在分别为每一行发送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中,您可以在一个命令中插入多行,这比逐行插入要好一些
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文件完成此操作。您能否创建一个存储过程,根据应用程序中的参数批量添加行?