5

我有许多包含数据的表,Schema1我想将这些表与数据一起复制到我创建的新模式中,Schema2.

有没有一种优雅的方式来做到这一点?我正在使用 SQL Server 管理工作室。

4

3 回答 3

9

在 SQL Management Studio 中,右键单击具有源表的数据库,选择任务 -> 导出数据。

您将能够设置源和目标服务器和架构,选择您要复制的表,您可以让目标架构创建将要导出的表。

此外,如果复制到相同的服务器和数据库但不同的架构,请确保:

  1. 对 Source 和 Destination 参数 使用 Sql Server Native Client(参见
    https://i.stack.imgur.com/Qqhbd.png )
  2. 为 Source 和 Destination 参数选择相同的数据库名称
  3. 在Select Source Tables and Views GUI中选择从一个或多个表或视图中复制数据(可选)
  4. 将目标表的架构更改为与源架构不同的内容(即键入“newschema.tablename”之类的内容)
于 2012-12-06T09:40:08.647 回答
1

假设架构发生了结构变化,因此您不能只进行备份并恢复到新数据库,您可以右键单击数据库并选择任务 | 生成脚本。在第二页有一个选项(默认关闭)来编写数据脚本。

这将创建一系列 SQL 插入语句以及 CREATE TABLE 语句。您可能还需要选择脚本触发器并检查使用这些功能时可能需要的其他一些选项。

您还可以跨模式执行 INSERT 或使用 SSIS,如下所述:

如何在 SQLServer 数据库的两个实例之间复制数据记录

需要注意的一点是,我相信导出数据工具不会传播索引、约束、触发器等,这就是为什么我喜欢使用第一种方法来处理中等数量的数据,或者至少在第一名,然后是其他方法之一。

于 2012-12-06T09:38:39.427 回答
1

这是我所做的:

  1. 右键单击源表并选择“选择前 1000 行”。
  2. 从选择中删除“前 1000 名”。
  3. 在 from 子句上方添加“INTO newschema.newtable”
  4. 运行该查询。
  5. 在新表上创建索引。

这不适用于所有人,因为它要求新架构可从 SQL Studio 中的同一连接获得。

于 2016-09-17T19:01:19.590 回答