2011-11-27 134 views
16

我刚刚在我的机器上创建了一个空数据库。我现在希望将我们的服务器数据库中的表复制到本地数据库。将表从一个数据库复制到另一个数据库

我需要运行哪些sql命令来执行此操作?我希望创建新表,从旧表中复制数据并将其插入到新表中。

+1

您可以创建一个SQL INSERT脚本。请参阅http://stackoverflow.com/questions/7515110/create-sql-insert-script-with-values-gathered-from-table – mhenry1384

回答

24

Create a linked server到源服务器。最简单的方法是在Management Studio中右键单击“Linked Servers”;它位于管理 - >服务器对象下。

然后你就可以使用4部分组成的名称,server.database.schema.table复制表:

select * 
into DbName.dbo.NewTable 
from LinkedServer.DbName.dbo.OldTable 

这都将创建具有相同的结构,原来的一个新的表和数据复制过来。

+2

+1只有答案考虑到这些数据库是在**不同的**服务器上! –

+0

如果您使用SQL Server 2000和2012+,将无法工作https://connect.microsoft.com/SQLServer/feedback/details/731869/using-sqlncli10-to-create-a-linked-server-to- sql-server-2000-causes-a-fault – sojim2

+0

这里SQL Server 2000和2012+的解决方案(回答最高票数,而不是标记的答案):http://stackoverflow.com/questions/187770/copy-tables-从一个数据库到另一个在SQL服务器 – sojim2

6

SELECT ... INTO:

select * into <destination table> from <source table> 
6

假设他们是在同一台服务器,试试这个:

SELECT * 
INTO SecondDB.TableName 
FROM FirstDatabase.TableName 

这将创建一个新表,只是将数据从FirstDatabase.TableName复制到SecondDB.TableName并不会创建外键或索引。

1

最快的方法是使用RazorSQL或Toad这样的工具。

2

假设您需要表的不同名称。

如果您使用PHPmyadmin,则可以在菜单中使用它们的SQL选项。然后,您只需复制第一个表中的SQL代码并将其粘贴到新表中。

当我从本地主机移动到虚拟主机时,这对我有用。 希望它适合你!

+0

对于非常大的表,其SQL代码将是一个复制和粘贴的痛苦,PHPmyadmin的**导入**和**导出**菜单可以很容易地用作好。 – tmnol

3
INSERT INTO ProductPurchaseOrderItems_bkp 
     (
     [OrderId], 
     [ProductId], 
     [Quantity], 
     [Price] 
    ) 
SELECT 
     [OrderId], 
     [ProductId], 
     [Quantity], 
     [Price] 
FROM ProductPurchaseOrderItems 
    WHERE OrderId=415 
1

如果需要整个表结构(不只是基本的数据布局),使用Task>Script Table As>Create To>New Query Window并在新的数据库上运行。然后,您可以在闲暇时复制数据。

4

如果在两个数据库之间不断迁移,那么插入到已经存在的表结构中是一种可能性。如果是这样,那么:

使用以下语法:

insert into DESTINATION_DB.dbo.destination_table 
select * 
    from SOURCE_DB.dbo.source_table 
[where x ...] 

如果迁移表(或外键约束的表)的很多,我建议:

  • 与生成脚本高级选项/脚本数据类型:仅数据或
  • 使用第三方工具的度假村。

希望它有帮助!

7

另一种可用于将表从源数据库复制到目标数据库的方法是SQL Server导出和导入向导,该向导在SQL Server Management Studio中可用。

您可以选择从源数据库导出或从目标导入,以便传输数据。

如果您安排复制与表格关系和订单无关的表格,此方法是将表格从源数据库复制到目标数据库的快速方法。

使用此方法时,表的索引和键将不会传输。如果您有兴趣复制它,则需要为这些数据库对象生成脚本。

如果这些是外键,将这些表连接在一起,则需要按正确的顺序导出数据,否则导出向导将失败。

随意阅读更多关于这种方法,以及有关一些方法(包括生成脚本,SELECT INTO和第三方工具),在这篇文章中: https://www.sqlshack.com/how-to-copy-tables-from-one-database-to-another-in-sql-server/

相关问题