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

在SQL Server中将表从一个数据库复制到另一个数据库

如何解决《在SQLServer中将表从一个数据库复制到另一个数据库》经验,为你挑选了7个好方法。

我有一个名为foo的数据库和一个名为bar的数据库.我在foo中有一个名为tblFoobar的表,我想从数据库foo移动(数据和所有)到数据库栏.执行此操作的SQL语句是什么?



1> 小智..:

SQL Server Management Studio的"导入数据"任务(右键单击数据库名称,然后单击任务)将为您完成大部分任务.从要将数据复制到的数据库中运行它.

如果表不存在,它将为您创建它们,但您可能必须重新创建任何索引等.如果表存在,它将默认附加新数据,但您可以调整(编辑映射),以便删除所有现有数据.

我一直使用它,它运作得相当好.


你不能说这是一个更好的答案.例如,它无法从脚本中调用自动化.BTW作者专门询问了"..SQL语句......".但当然这是一个很好的答案,但不是更好的答案;).
作者要求移动"(数据和所有)"; 所以我希望这个答案能做到这一点.它创建表但不创建任何键或索引; 所以对SQL答案没有多大改进.
它似乎只在2008版本中提供

2> Amy B..:

在SQL Server上?并在同一个数据库服务器上?使用三部分命名.

INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar

这只是移动数据.如果要移动表定义(以及权限和索引等其他属性),则必须执行其他操作.


@TahaRehmanSiddiqui:因为它回答了问题;)他没有问如何在数据库服务器之间复制它.但是大多数寻找答案的人最终会在这里,因为谷歌将其作为第一个结果:)

3> leoinfo..:

这应该工作:

SELECT * 
INTO DestinationDB..MyDestinationTable 
FROM SourceDB..MySourceTable 

不会复制constaints,默认值或索引.创建的表将没有聚集索引.

或者你可以:

INSERT INTO DestinationDB..MyDestinationTable 
SELECT * FROM SourceDB..MySourceTable

如果目标表存在且为空.


这不会在SQL Server 2008中插入标识列的值.只有在使用列列表并且目标表的IDENTITY_INSERT为ON时才允许这样做.

4> Igor Voplov..:

如果它只是一个表,那么你需要做的就是

脚本表定义

在另一个数据库中创建新表

更新规则,索引,权限等

导入数据(上面已经显示了几个插入示例)

您需要考虑的一件事是其他更新,例如将来迁移其他对象.请注意,源表和目标表的名称不同.这意味着如果依赖于视图,存储过程等依赖对象,您还必须进行更改.

使用一个或多个对象,可以手动进行,无任何问题.然而,当不仅仅是一些更新时,第三方比较工具非常方便.现在我正在使用ApexSQL Diff进行架构迁移,但是你不能错过任何其他工具.



5> ScottStoneho..:

    脚本的create table管理工作室,运行该脚本在酒吧创建表.(右键单击对象资源管理器中的表,脚本表为,创建为...)

    INSERT bar.[schema].table SELECT * FROM foo.[schema].table



6> ryan..:

您还可以使用" 生成SQL Server脚本向导"来帮助指导创建可执行以下操作的SQL脚本:

复制表架构

任何约束(身份,默认值等)

表中的数据

以及其他许多选择

SQL Server 2008的良好示例工作流程,此处显示屏幕截图.



7> NeverHopeles..:

你可以这样走:(一般的例子)

insert into QualityAssuranceDB.dbo.Customers (columnA, ColumnB)
Select columnA, columnB from DeveloperDB.dbo.Customers

此外,如果您还需要生成列名以及insert子句,请使用:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName')

复制结果并粘贴到查询窗口以表示您的表列名称,甚至这也将排除标识列:

    select (name + ',') as TableColumns from sys.columns 
where object_id = object_id('YourTableName') and is_identity = 0

请记住,如果数据库属于同一位置,则复制行的脚本将起作用.


你可以尝试这个.

select * into  from ..dbo.

如果两个DB位于同一服务器中,则服务器名称是可选的

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有