一尘不染

SQL Server 2005:使用单个查询插入多行

sql

这应该是一个相当简单的问题,但我无法在线找到可靠的答案。我试图将多个行插入到同一表中,但只有一条语句。我在网上看到的最受欢迎的是以下内容,但我读到它仅适用于SQL
Server 2008:

INSERT INTO Table (Name, Location) VALUES
('Name1', 'Location1'),
('Name2', 'Location2'),
('Name3', 'Location3'), etc...

如果此方法可与SQL Server 2005一起使用,我会更喜欢此方法,但我认为不会。根据我的阅读,另一个选项与INSERT之后的UNION
ALL以下SELECT语句有关,这似乎很笨拙。有谁知道在2005年执行此操作的最佳语法?

谢谢。


阅读 112

收藏
2021-03-10

共1个答案

一尘不染

是的。您必须UNION ALL在SQL Server 2005中使用,才能在单个语句中的SQL脚本中插入多行。

INSERT INTO Table 
  (Name, Location) 
SELECT 'Name1', 'Location1' 
UNION ALL
SELECT 'Name2', 'Location2'
UNION ALL
SELECT 'Name3', 'Location3'

另一个主要的选择是Insert多次重复该语句,这更加冗长。在后一种情况下,您需要小心使用显式事务,以避免许多单独提交的开销(当然,出于原子性原因)

如果要插入很多行,则可以使用BULK INSERT在一个语句中从定界文件中全部加载。

最后,如果这是您要脚本化的数据库中已经存在的数据(可能要部署在其他服务器上),则SSMS Tools
Pack
插件具有“生成插入语句”功能,可以为您生成这些语句。

2021-03-10