我在localhost上托管了多个结构相同的sqlite数据库。我需要将所有数据添加到一个数据库中。数据可能具有相同的PK,因此重要的是不要替换数据,而只添加新数据并在需要时分配新的PK。
唯一可行的方法是将主键定义为INTEGER PRIMARY KEY
,并且无需创建和更新临时表
附加db2
后,执行以下语句:
INSERT INTO mytable(col1, col2, ....)
SELECT col1, col2, ....
FROM db2.mytable;
通过枚举除主键之外的所有列,您将在mytable
中插入db2.mytable
的所有行,并为其主键列分配一个新值。
首先附加db2
,然后:
CREATE TEMPORARY TABLE tmp AS SELECT * FROM db2.mytable;
UPDATE tmp SET id = NULL;
INSERT INTO mytable SELECT * FROM tmp;
DROP TABLE tmp;