SQL插入for循环
如何在块中进行SQL Server提交插入?我需要将大量行从旧数据库复制到新表中,但它有几个问题:SQL插入for循环,sql,sql-server,insert-into,logfile,Sql,Sql Server,Insert Into,Logfile,如何在块中进行SQL Server提交插入?我需要将大量行从旧数据库复制到新表中,但它有几个问题: 完成需要很长时间,直到整个事务完成,我才在表中看到任何行 我的日志文件正在疯狂增长,可能会耗尽空间 如果中间有东西断了,我必须重复所有的事情。 如果我添加SET ROWCOUNT 500,我可以限制行数,但我不知道如何继续使用上次插入的ID。我可能会查询新表以查看上次插入的内容,但我不确定这样做是否正确。这有点困难,因为我的where子句没有使用ID列,所以我不知道如何确切地知道在哪里继续 最好的
SET ROWCOUNT 500
,我可以限制行数,但我不知道如何继续使用上次插入的ID。我可能会查询新表以查看上次插入的内容,但我不确定这样做是否正确。这有点困难,因为我的where
子句没有使用ID
列,所以我不知道如何确切地知道在哪里继续
最好的方法是什么?是否有一个“for循环”或其他允许我偶尔提交的东西
我正在使用SQLServer2008R2的SSMS
如何在块中进行SQL Server提交插入
您可以编写代码,将其分块插入,非常简单
1:是的,你知道,交易就是这样运作的
2:是的,你知道,交易就是这样运作的
3:是的,猜猜看——这就是交易的运作方式,你知道;)
但我不知道如何继续使用最后插入的ID
叫做编程。在客户端生成ID。还记得上一次生成的吗
一般来说,我建议不要在代码中插入,这听起来像是数据复制操作,这取决于代码的工作方式,还有其他机制(批量复制接口)
我正在使用SQL Server 2008 R2的SSMS
基本上,它的行为就像你编程一样。您可以轻松地在SSMS端放入一些循环,或者导出到一个文件,然后批量插入该文件。但不会帮助您完成第2项。。。除非您选择简单备份模式,而不关心恢复
同样,3是复杂的-你如何正确地重新启动?许多附加代码
最好的方法取决于具体情况,可悲的是,你太模糊了,无法做出比瞎猜更多的猜测。即使TomTom的答案是讽刺性的,但它包含两个基本选项,这可能会帮助你:
您还可以找到更多选项。那怎么办?@danihp:可以过滤吗?我的意思是,添加一个
where
子句?它似乎只复制整个表。也许这可以帮助您:。另外,BATCHSIZE=batch\u size
对您来说还不够(而是where子句)?@danihp:问题是,我只想导入指定时间段的数据(因此我需要查询特定列)。大容量插入从数据文件导入数据。您应该仅创建数据文件,其中应导入行。或者你可以导入到一个临时表中,然后根据需要将数据合并到最终的表中。先生,1000个互联网,这是一个简洁而有用的答案。嘿,你最近似乎有点兴奋。也许你需要休个小假。你知道,放松点,放松点。谢谢,这是很有帮助的,尽管最后我写了一个小的控制台应用程序来传输数据。