【发布时间】:2019-12-12 22:56:10
【问题描述】:
如何将一个表(table1)中的记录插入到不同 SQL 数据库中的同一个表(table2)中?
但是目标表已经存在并且具有相同 id(c1) 的记录。 table1的记录必须添加到table2,但是我必须增加字段(c1)。
表 1
C1;C2;C3;
1;Name 1;Address 1;
2;Name 2;Address 2;
3;Name 3;Address 3;
4;Name 4;Address 4;
表 2
C1;C2;C3 ;
1;Name 11;Address 11;
2;Name 12;Address 12;
3;Name 13;Address 13;
4;Name 14;Address 14;
5;Name 1;Address 1;
6;Name 2;Address 2;
7;Name 3;Address 3;
8;Name 4;Address 4;
怎么了? 两个数据库中的表 cl 和以下列相同: (clstamp, nome, no, estab, vendnm, ncont)
INSERT INTO DB2..cl(clstamp, nome, estab, vendnm, ncont)
select clstamp, nome, estab, vendnm, ncont
FROM [DB1]..[cl]
LEFT JOIN [DB2]..[cl] ON [DB1]..[cl].clstamp=[DB2]..[cl].clstamp
and [DB1]..[cl].nome=[DB2]..[cl].nome
and [DB1]..[cl].estab=[DB2]..[cl].estab
and [DB1]..[cl].vendm=[DB2]..[cl].vendnm
and [DB1]..[cl].ncont=[DB2]..[cl].ncont
where [DB1]..cl.ncont not in (select ncont from [DB2]..cl)
order by [DB2]..[cl].no
【问题讨论】:
-
尝试导出向导。右键单击数据库 > 任务 > 导出数据
-
table2 是否有 C1 的标识列?另外,它们在同一台服务器上吗?
-
是的,c1 是一个标识列,它们在同一个服务器中
-
如果你想在table2中保留对table1中原始记录的引用,那么你可以在table2中添加一个额外的字段。 F.e.命名为“table1ID”。但是话又说回来,这将违背normalization 的精神。
-
不,我不需要对 table1 的引用。我只需要扫描 c1 列中的最后一个数字并将 +1 增加到该列。
标签: sql sql-server