将数据从一个数据库传输到另一个数据库


74

如何从一个数据库中获取数据并插入到另一个数据库表中?我做不到 请帮助我将数据从一个转移到另一个。


12
有很多方法可以做到这一点。你有什么要求 “我做不到。” 你尝试了什么?您看到什么错误?
Jamie F

15
问题的结构使作者完全迷路。您当然可以通过开始他的旅程来判断他。我只想写一个答案。
Andras Gyomrey,2015年

Answers:


117

有几种方法可以执行此操作,以下是两个选项:

选项1-右键单击要复制的数据库

  • 选择“任务”>“生成脚本”

  • “选择特定的数据库对象”

  • 检查“表”

  • 标记为“保存到新查询窗口”

  • 点击“高级”

  • 将“脚本的数据类型”设置为“架构和数据”

  • 下一个下一个

现在,您可以在新数据库上运行生成的查询。

选项2

  • 右键单击要复制的数据库

  • “任务”>“导出数据”

  • 下一个下一个

  • 选择要复制表的数据库

  • 标记为“从一个或多个表或视图复制数据”

  • 选择要复制的表


4
在sql server 2008中复制每个表的所有数据,您应该在“任务”>“生成脚本”中启用脚本数据==>“脚本向导” ==>选择“脚本选项”部分
Arash 2013年

1
选项1preparing data在最后一步出现错误。选项2我之前Choose the database to copy the tables to
遇到

1
我在两个数据库中都有数据..在这种情况下,您的解决方案会有所帮助吗?
SanamShaikh '18

16

在一个数据库表中插入值到另一个数据库表中的示例

insert into dbo.onedatabase.FolderStatus
(
  [FolderStatusId],
  [code],
  [title],
  [last_modified]
)

select [FolderStatusId], [code], [title], [last_modified]
from dbo.Twodatabase.f_file_stat

这对我有用,但是,在SqlExpress 2014中,我不得不使用在其他答案中找到的..表示法,即INSERT INTO [db1] .. table1(ID,MetaTitle)SELECT ID,MetaTitle FROM [db2] .. table1
Adam Hey

顺序应为onedatabase.dbo.FolderStatusTwodatabase.dbo.f_file_stat。或者您使用..@AdamHey指出的表示法。
bugybunny

6

如果两个数据库都在同一服务器上,并且您想转移整个表(对其进行复制),则使用简单的select into语句...

select * into anotherDatabase..copyOfTable from oneDatabase..tableName

然后,您可以将游标写在sysobjects的顶部,并以这种方式复制整个表集。

如果要进行更复杂的数据提取和转换,请使用SSIS并在其中构建适当的ETL。


如果将select *用作语法,则不会复制键和约束
-ArieKanarie

6

对于Azure上的用户,请按照Virus的以下修改说明进行操作:

  1. 打开SSMS。
  2. 右键单击要从中复制数据的数据库。
  3. 选择生成脚本>>选择特定的数据库对象>>选择要传输的表/对象。 强文本
  4. 在“保存到文件”窗格中,单击“高级”。
  5. 将“脚本的数据类型”设置为架构和数据
  6. 设置“脚本删除并创建”以脚本删除并创建
  7. 在“表格/视图选项”下,将相关项目设置为TRUE。虽然我建议将所有设置为TRUE以防万一。您可以在脚本生成后随时对其进行修改。
  8. 设置文件路径>>下一步>>下一步
  9. 打开新创建的SQL文件。从文件顶部删除“使用”。
  10. 在目标数据库上打开新的查询窗口,粘贴脚本内容(不使用)并执行。


3
  1. 您可以使用Management Studio备份和还原数据库。
  2. 再次从Management Studio,您可以使用“复制数据库”。
  3. 如果有必要,您甚至可以手动进行。我的意思是手动创建目标数据库并通过sql语句手动复制数据...

你能澄清为什么问这个吗?是您没有经验或做其他事情吗?



2

这些解决方案在目标数据库为空的情况下有效。如果两个数据库都已经有一些数据,则需要更复杂的http://byalexblog.net/merge-sql-databases


2
一切都很好,只是那个家伙丢下了FK和PK,而且似乎并没有把它们放回原处……难道答案不应该仅仅是有效地链接到别人的东西吗?
乔恩(Jon)

1
@Jon为什么要在源数据库中还原PK和FK?最好在导出后将其复制到垃圾桶中。
阿努比斯(Anubis)

1
因为我要做的是同步两个环境(即将QA扩展到Develop,以便我们不必重复所有的数据输入)。
乔恩(Jon)

0

如果您知道该FROM子句可以为表名指定数据库,则可以通过T-SQL语句来实现。

insert into database1..MyTable
select from database2..MyTable

这是Microsoft解释语法的方式:https : //docs.microsoft.com/zh-cn/sql/t-sql/queries/from-transact-sql?view=sql-server-ver15

如果表或视图在SQL Server的同一实例上的另一个数据库中存在,请使用格式的完全限定名称database.schema.object_name

schema_name可以像上面一样被省略,这表示当前用户的默认架构。默认情况下为dbo

如果需要,可将任何过滤添加到列/行。确保在移动数据之前创建任何新表。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.