【问题标题】:How to merger/combine data from two sql databases that have a same structure?如何合并/组合来自具有相同结构的两个 sql 数据库的数据?
【发布时间】:2014-04-15 16:08:40
【问题描述】:

我正在用 C# 编写一个使用 SQL Server 数据库的程序。

我的程序包含一个空白数据库(示例数据库),允许用户创建新数据库。

例如:

  • 用户 1 使用我的程序在他的计算机上创建一个新的数据库 (DB1),然后他将一些数据导入/输入到 DB1
  • 用户 2 使用我的程序在他的计算机上创建一个新的数据库 (DB2),然后他将一些数据导入/输入到 DB2 中

现在,我有两个数据库(DB1、DB2)。您知道如何合并/合并两个数据库以拥有包含所有用户数据的唯一数据库吗?

你能帮帮我吗?

请看我的演示截图

【问题讨论】:

  • 用户是在他们的计算机上还是在主数据库服务器上创建数据库?该程序是否使用任何互联网连接?
  • 用户在他们的计算机上创建数据库。我有他们数据库的备份文件

标签: c# sql-server


【解决方案1】:

如果使用适用于您的应用程序的程序,您可能会使用 MERGE 语句来组合您的数据。 要了解有关合并的更多信息,请关注http://msdn.microsoft.com/en-us/library/bb510625.aspx 主题

添加了 OUTPUT 使用示例,它展示了如何获取插入行的 PK 以插入到其他相关表中。

CREATE TABLE #teachers(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [name] [nvarchar](15) NOT NULL
)
CREATE TABLE #pupils(
    [ID] [int] IDENTITY(1,1) NOT NULL,
    [name] [nvarchar](15) NOT NULL
)
CREATE TABLE #createdTeachers ([ID] [int])
CREATE TABLE #createdPupils ([ID] [int])

insert into #teachers output inserted.ID into #createdTeachers values ('teacher#2') 
insert into #teachers output inserted.ID into #createdTeachers values ('teacher#1') 
insert into #pupils output inserted.ID into #createdPupils values ('pupil#2')
insert into #pupils output inserted.ID into #createdPupils values ('pupil#1')

select t.ID as NEW_TEACHER_ID,p.ID as NEW_PUPIL_ID from #createdTeachers as t , #createdPupils as p

我没有准备样本,它完全描述了您的图表,但显示了必要的概念。 您可以使用“select t.ID as NEW_TEACHER_ID,p.ID as NEW_PUPIL_ID from #createdTeachers as t , #createdPupils as p”将teacherId、StudentId等插入Teacher_Pupil表

【讨论】:

  • SQL 2005 不支持 Merge 语句。您还有其他想法吗?
  • 您可以使用 ORM(例如 EntityFramework)来简化合并。另一种方法是结合插入/更新(programmersedge.com/post/2010/07/22/…stackoverflow.com/questions/12621241/…)。您还可以找到有用的 OUTPUT 命令来保持为相关表创建的 PrimaryKeys (technet.microsoft.com/en-us/library/ms177564.aspx)
  • 您好 akorenchikov,您能否看一下简单的图表示例:link。 (注意:Id 字段的标识增量 = 1)。我使用 insert into ... select 来组合表格的数据:学生、教师、课程。但是,如何合并 Teacher_Pupil 表的数据?
  • 您好 akorenchikov,非常感谢您。我正在寻找一种解决方案,将另一个数据库中 Teacher_Pupil 表的教师 ID、瞳孔 ID 从(输出)替换为旧教师 ID、瞳孔 ID 值。你有什么想法吗?
【解决方案2】:

这里提到合并到数据库请参考:http://msdn.microsoft.com/en-us/library/ms140052.aspx

【讨论】:

  • 我想使用 C# 代码来执行 SQL 语句。你能帮我吗?
  • 我尝试使用导入/导出数据,但无法复制所有数据。例如:我有 3 个表:t1、t2、t3 和 t2 与 t1 和 t3 有关系。合并后只有 t1 和 t3 有正确的数据,无法正确复制 t2 的数据
猜你喜欢
  • 2013-03-24
  • 2013-09-06
  • 2014-03-30
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多