我有一个程序,我需要针对MS SQL表运行多个插入语句(动态生成)。现在,我做(伪代码):
Loop
Generate Insert Statement String
SQLCommand.Text = Generated Insert Statement String
SQLCommand.Execute().
End Loop
Close Connection
简单地构造一个由分号分隔的大型插入字符串是否更好。并只运行一个SQLCommand.Execute()语句?或者它没有什么区别?
谢谢!
答案 0 :(得分:3)
你可能会发现这个technique很有用。它大大减少了处理的报表数量。
答案 1 :(得分:3)
您需要在开始插入之前启动事务。然后,当您将所有插入发送到服务器并完成循环时,您应该提交。这将为您节省大量的数据库写入!
在此处查看更多内容:http://msdn.microsoft.com/en-us/library/5ha4240h.aspx
答案 2 :(得分:1)
如果您有这个阶段的选择和能力,您可能希望升级到SQL Server 2008.它有许多额外的好处,包括在一个语句中添加T-SQL以进行多次插入。
答案 3 :(得分:0)
答案 4 :(得分:0)
在Postgres上,您将使用COPY,它允许以类似CSV的格式进行批量插入。不知道sqlserver是否有类似的东西。
另一种方法是使用存储的进程并将一长串数据传递给某些后端插入循环。
答案 5 :(得分:0)
取决于您的倍数是多少。但你绝对应该看看Sql Bulk Copy - 非常快,非常方便。
马克