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

前端之家收集整理的这篇文章主要介绍了SQL Server 2005:使用单个查询插入多行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
这应该是一个相当简单的问题,但是我还没有在网上找到一个坚实的答案。我试图在同一个表中插入多行,但只有一个语句。我在线看到的最流行的是以下内容,但我已经看到它只适用于sql Server 2008:
INSERT INTO Table (Name,Location) VALUES
('Name1','Location1'),('Name2','Location2'),('Name3','Location3'),etc...

我喜欢这种方法,如果它可以使用sql Server 2005,但我不认为它会。另一个选项,从我所看到的,与INSERT之后的UNION ALL的以下SELECT语句有关,这似乎很笨重。有没有人知道在2005年做最好的语法?

谢谢。

解决方法

是的。您必须在sql Server 2005中使用UNION ALLs在单个语句中的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插件具有“生成插入语句”功能,可以为您生成这些语句。

猜你在找的MsSQL相关文章