具有相同结构的数据库副本具有主键问题

时间:2014-07-16 09:08:00

标签: mysql sql

我有一个场景,

我有两个数据库 DB1 DB2 。两个数据库都具有相同的结构

DB1包含一个表" table1"使用 AUTO INCREMENT PRIMARY KEY 1,2,3,4,5和DB2还包含" table1"主键1,2,3,4,5。当我将数据从DB2插入到DB1时,来自DB2的数据将变为6,7,8,9,10。但我需要1,2,3,4,5来自DB2的数据和6,7,8,9,10作为DB1数据..

我可以使用此查询吗?

mysqldump -n -t -u userB --password=*** db2 | mysql -u userA --password=*** db1

有可能吗?

3 个答案:

答案 0 :(得分:1)

您可以使用这两种情景中的一种

首先:

  • 在临时表中复制db1.table1数据
  • 截断db1.table1
  • 将数据从db2.table复制到db1.table1
  • 将数据从临时表复制到db1.table

第二

  • 将db1.table1数据复制到db2.table1
  • 截断db1.table1
  • 将数据从db2.table复制到db1.table1

使用可以使用此mysql命令复制数据:

插入dbDestination.tblDestination(field1,field2,...) 选择 ... 来自dbSource.tblSource

答案 1 :(得分:1)

DECLARE @MaxId INT
SELECT @MaxId = MAX(Id) FROM Db1

SET IDENTITY_INSERT db1 ON
INSERT INTO Db1(Id, Column1, Column2, ...)
SELECT @MaxId+ ROW_NUMBER()OVER(ORDER BY Id),
    Column1,
    Column2,
    ...
FROM db2
SET IDENTITY_INSERT db1 OFF

试试这个..

答案 2 :(得分:-1)

首先在将数据从DB2插入DB1之前,在DB1中截断“table1”   因为它可能设置了“自动增量id = 6”