当前位置:  开发笔记 > 数据库 > 正文

如何将行从一个SQL Server表复制到另一个SQL Server表

如何解决《如何将行从一个SQLServer表复制到另一个SQLServer表》经验,为你挑选了5个好方法。

我有两个相同的表,需要将行从表复制到另一个表.最好的方法是什么?(我需要以编程方式只复制几行,我不需要使用批量复制实用程序).



1> Scott Nichol..:

只要没有标识列,您就可以

INSERT INTO TableNew
SELECT * FROM TableOld
WHERE [Conditions]


请注意这种语法,因为如果Table2有一个标识列,它将无法工作,如果Table1在没有Table2同步变化的情况下发生变化(以前刻录过),它将来会中断.这个解决方案可能非常适合您的情况,请注意这些注意事项.
您可以使用`SET IDENTITY_INSERT ON`(和`SET IDENTITY_INSERT
OFF`)来暂时禁用您尝试插入的表上的标识列.为我努力恢复数据集中间的一些缺失记录.

2> Michael Hare..:

替代语法:

INSERT tbl (Col1, Col2, ..., ColN)
  SELECT Col1, Col2, ..., ColN
  FROM Tbl2
  WHERE ...

select查询可以(当然)包括表达式,case语句,常量/文字等.


当表格略有不同时,这很棒。我的第二张表中还有一些额外的列,并且可接受的答案不适用于MSSQL,因为它们需要相同。

3> ScottStoneho..:

Jarrett的回答创建了一个新表.

Scott的答案插入到具有相同结构的现有表中.

您还可以插入具有不同结构的表:

INSERT Table2
(columnX, columnY)
SELECT column1, column2 FROM Table1
WHERE [Conditions]


@ScottStonehouse:如果你收集所有其他答案,就像你已经完成但是使用代码(使其全面),你肯定会成为最好的答案.

4> Kaniu..:
INSERT INTO DestTable
SELECT * FROM SourceTable
WHERE ... 

适用于SQL Server


仅当DestTable不存在时才有效.如果在此查询之前创建了DestTable,则会出现错误.
实际上,如果目标表不存在,它将失败.如果现有DestTable不为空,则可能导致错误.

5> Jarrett Meye..:
SELECT * INTO < new_table > FROM < existing_table > WHERE < clause >


当然!完全符合数据库资格.[服务器].[模式] [表].例如`SELECT*INTO [SQLTEST].[dbo].[EMPLOYEES] FROM [SQLPROD].[dbo].[EMPLOYEES]`
这会创建一个新表,而不是OP要求的表.
推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有