SSMS中如何把一个库的表移到另一个库中
方法 1:使用“生成脚本”功能
步骤
- 右键点击源表: 
- 在对象资源管理器中,展开源数据库的“表”节点,找到目标表。
 - 右键点击该表,选择 “脚本表为” -> “创建到” -> “新查询编辑器窗口”。
 
 - 修改脚本: 
- 在生成的 
CREATE TABLE脚本中,将目标数据库名添加到表名前。例如:CREATE TABLE [TargetDatabase].[dbo].[YourTableName] (-- 表定义 ); 
 - 在生成的 
 - 执行脚本: 
- 在目标数据库的查询窗口中执行修改后的脚本,创建新表。
 
 - 复制数据: 
- 使用 
INSERT INTO ... SELECT语句将数据从源表复制到目标表: -  
INSERT INTO [TargetDatabase].[dbo].[YourTableName] SELECT * FROM [SourceDatabase].[dbo].[YourTableName]; 
 - 使用 
 - (可选)删除源表: 
- 确认数据已成功复制后,可以删除源表: 
DROP TABLE [SourceDatabase].[dbo].[YourTableName]; 
 - 确认数据已成功复制后,可以删除源表: 
 
方法 2:使用“导出数据”向导
步骤
- 右键点击源数据库: 
- 在对象资源管理器中,右键点击源数据库,选择 “任务” -> “导出数据”。
 
 - 配置数据源: 
- 在“选择数据源”页面,确保选择了正确的源数据库。
 
 - 配置目标: 
- 在“选择目标”页面,选择目标数据库,并指定目标表(如果目标表不存在,可以选择创建新表)。
 
 - 配置数据映射: 
- 在“选择表和视图”页面,选择要导出的表,并配置列映射(通常默认即可)。
 
 - 执行导出: 
- 点击“完成”开始导出数据。
 
 
方法 3:使用 SELECT INTO 语句(临时表)
 
步骤
- 在目标数据库中创建新表: 
- 使用 
SELECT INTO语句直接从源数据库创建表并复制数据:USE TargetDatabase; GOSELECT * INTO [YourTableName] FROM [SourceDatabase].[dbo].[YourTableName]; 
 - 使用 
 - (可选)删除源表: 
- 确认数据已成功复制后,可以删除源表: 
USE SourceDatabase; GODROP TABLE [dbo].[YourTableName]; 
 - 确认数据已成功复制后,可以删除源表: 
 
方法 4:使用备份和还原(适用于整个数据库)
步骤
- 备份源数据库: 
- 右键点击源数据库,选择 “任务” -> “备份”,创建数据库备份。
 
 - 还原到目标数据库: 
- 右键点击“数据库”节点,选择 “还原数据库”,将备份还原到目标数据库。
 
 - (可选)删除不需要的表: 
- 如果只需要部分表,可以在还原后删除不需要的表。
 
 
方法 5:使用 DETACH 和 ATTACH(适用于文件组迁移)
 
步骤
- 分离源数据库: 
- 右键点击源数据库,选择 “任务” -> “分离”。
 
 - 移动数据库文件: 
- 将数据库的 
.mdf和.ldf文件移动到目标服务器的目标位置。 
 - 将数据库的 
 - 附加数据库到目标服务器: 
- 右键点击“数据库”节点,选择 “附加”,选择移动后的数据库文件。
 
 - (可选)删除不需要的表: 
- 在附加后删除不需要的表。
 
 
注意事项
- 权限要求: 
- 确保你有足够的权限访问源数据库和目标数据库,并执行相关操作。
 
 - 外键和约束: 
- 如果表有外键约束,可能需要先删除或禁用外键,然后再移动表。
 
 - 索引和触发器: 
- 生成的脚本会包含索引和触发器,但如果使用 
SELECT INTO,需要手动重新创建索引和触发器。 
 - 生成的脚本会包含索引和触发器,但如果使用 
 - 数据一致性: 
- 在移动数据时,确保没有其他进程在修改源表,以避免数据不一致。
 
 - 事务支持: 
- 对于大数据量的移动,建议使用事务来确保数据完整性。
 
 
推荐方法
- 小表或单表移动:推荐使用 方法 1(生成脚本) 或 方法 3(SELECT INTO)。
 - 大表或批量表移动:推荐使用 方法 2(导出数据)。
 - 整个数据库迁移:推荐使用 方法 4(备份和还原)。
 
