我们正在尝试将两个不同的数据库放在一起,但两个数据库都使用相同的ID。不同的信息,但我们将有两个具有相同ID的用户。有没有办法可以在一个数据库中更改ID,然后使用该ID更新每个表?
答案 0 :(得分:2)
如果您没有依赖关系,我会想到一个非常简单的解决方案:
伪代码:
SELECT max(id) FROM database1.tablename
// Returns 10389
UPDATE database2.tablename SET id = (id + 10389)
// Sets 1st record to 10390
// 2nd record to 10391
// 3rd record to 10392
......
答案 1 :(得分:0)
如果它是一个自动增量id列,你可以这样做:
SELECT //(columns except id)
INTO new_table_name [IN otherdatabase]
FROM old_tablename
和tadaa!
答案 2 :(得分:0)
我们正在开发类似这样的项目,答案是临时表。对要插入的数据进行分级,并为新ID添加一列。插入父记录并在登台表中更新新的id(SQL server对输出子句有帮助,我不知道其他dbs)。现在,当您插入子记录时,您将使用新ID而不是旧ID。另一种方法是将旧id的列添加到父表。在插入子表时使用它来连接以获取新的id。迁移所有数据后,请删除该列。
答案 3 :(得分:0)
假设数据库1或数据库2中没有进行其他处理,请尝试尝试:
1)在数据库1中获取最大ID
2)在数据库2中,删除与此ID相关的所有外键
3)在数据库2中,在ID是自动增量/标识的表上,您必须添加新的列ID2并用UPDATE YourTable SET ID2=ID+{max ID from database 1}
填充它,然后删除原始ID列,然后重命名ID2到ID
4)在数据库2中,对于将此ID用作FK的所有其他表,使用UPDATE OtherTable SET ID=ID+{max ID from database 1}
更改ID
5)在数据库2中,恢复外键以验证数据
6)在数据库2中,将数据导出到文件
7)在数据库1中,从数据库2导入文件