这应该是一个相当简单的问题,但我无法在线找到可靠的答案。我试图将多个行插入到同一表中,但只有一条语句。我在网上看到的最受欢迎的是以下内容,但我读到它仅适用于SQL Server 2008:
INSERT INTO Table (Name, Location) VALUES ('Name1', 'Location1'), ('Name2', 'Location2'), ('Name3', 'Location3'), etc...
如果此方法可与SQL Server 2005一起使用,我会更喜欢此方法,但我认为不会。根据我的阅读,另一个选项与INSERT之后的UNION ALL以下SELECT语句有关,这似乎很笨拙。有谁知道在2005年执行此操作的最佳语法?
谢谢。
是的。您必须UNION ALL在SQL Server 2005中使用,才能在单个语句中的SQL脚本中插入多行。
UNION ALL
INSERT INTO Table (Name, Location) SELECT 'Name1', 'Location1' UNION ALL SELECT 'Name2', 'Location2' UNION ALL SELECT 'Name3', 'Location3'
另一个主要的选择是Insert多次重复该语句,这更加冗长。在后一种情况下,您需要小心使用显式事务,以避免许多单独提交的开销(当然,出于原子性原因)
Insert
如果要插入很多行,则可以使用BULK INSERT在一个语句中从定界文件中全部加载。
最后,如果这是您要脚本化的数据库中已经存在的数据(可能要部署在其他服务器上),则SSMS Tools Pack插件具有“生成插入语句”功能,可以为您生成这些语句。