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

时间:2008-10-09 15:20:58

标签: sql sql-server copy migrate database-table

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

9 个答案:

答案 0 :(得分:529)

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

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

我一直都在使用它,效果相当不错。

答案 1 :(得分:200)

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

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

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

答案 2 :(得分:102)

这应该有效:

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

复制constaints,默认值或索引。创建的表格具有聚集索引。

或者你可以:

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

如果目标表存在且为空。

答案 3 :(得分:46)

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

  • 脚本表定义
  • 在另一个数据库中创建新表
  • 更新规则,索引,权限等
  • 导入数据(上面已经显示了几个插入示例)

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

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

答案 4 :(得分:23)

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

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

答案 5 :(得分:16)

您还可以使用 Generate SQL Server Scripts Wizard 来帮助指导创建可执行以下操作的SQL脚本:

  • 复制表架构
  • 任何约束(标识,默认值等)
  • 表格中的数据
  • 以及其他许多选项(如果需要)

SQL Server 2008 的良好示例工作流程,屏幕截图显示为here

答案 6 :(得分:9)

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

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 <Destination_table> from <Servername>.<DatabaseName>.dbo.<sourceTable>

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

答案 7 :(得分:1)

如果有现有表,我们只想复制数据, 我们可以尝试这个查询。

插入Destination_Existing_Tbl选择col1,col2 FROM Source_Tbl

答案 8 :(得分:0)

复制数据

INSERT INTO Alfestonline..url_details(url,[status],recycle) 
SELECT url,status,recycle FROM AlfestonlineOld..url_details