我有两个数据库,具有相同的结构,但数据不同。还有..。在这两个数据库中,所有数据都在“Tiles”和“TilesData”列中具有自动识别in,这些in是相关的键。我必须将行从一个移动到另一个,但是id有例外。
我的问题描述清楚了吗?

我尝试过这样做(但我有点担心这个解决方案的可靠性,会有几百万行):
INSERT INTO DataBase_2.Tiles (X,Y,Zoom,Type,CacheTime)
SELECT X, Y, Zoom, Type, CacheTime FROM DataBase_1.Tiles;
INSERT INTO DataBase_2.TilesData(Tile)
SELECT Tile FROM DataBase_1.TilesData;你能帮我还是给我一些提示?仅仅是SQL就足够了吗?
发布于 2015-10-13 16:33:43
当自动递增列声明为整数主键(没有AUTOINCREMENT)时,新ID将在表中的最大值之后获得下一个值。
检查两个表是否具有相同的最大ID值:
SELECT MAX(id) FROM DataBase_2.Tiles;
SELECT MAX(id) FROM DataBase_2.TilesData;如果它们相等,则相应的行确实会获得相同的新ID。但是,您应该使用ORDER来确保以相同的顺序读取/插入行:
INSERT INTO DataBase_2.Tiles (...)
SELECT ... FROM DataBase_1.Tiles ORDER BY id;
INSERT INTO DataBase_2.TilesData(Tile)
SELECT Tile FROM DataBase_1.TilesData ORDER BY id;如果id列是用AUTOINCREMENT声明的,那么您必须检查(如果需要,调整) 序列表中的下一个ID值。
https://stackoverflow.com/questions/33104776
复制相似问题