我有一堆SQLite数据库文件,我需要将它们合并为一个大的db文件。
基于this,我猜这三个命令应该将两个db合并为一个。
attach './abc2.db' as toMerge; insert into test select * from toMerge.test detach database toMerge
问题是db有PRIMARY KEY字段,我收到此消息 - “错误:PRIMARY KEY必须是唯一的”。
这是db的测试表。
CREATE TABLE test (id integer PRIMARY KEY AUTOINCREMENT,value text,goody text)
答案 0 :(得分:3)
我只是想在这里思考......(可能也是在所有其他人都继续前进之后)。
将主键映射到“NULL”应该产生想要的结果(如果在其他地方使用它作为外键,则没有好处,因为密钥可能存在,但具有不同的内容)
attach './abc2.db' as toMerge;
insert into test select NULL, value, goody from toMerge.test;
detach database toMerge;
实际测试:
sqlite> insert into test select * from toMerge.test;
Error: PRIMARY KEY must be unique
sqlite> insert into test select NULL, value, goody from toMerge.test;
sqlite> detach database toMerge;
答案 1 :(得分:1)
我不是百分百肯定,但似乎我应该读取所有元素并将元素(PRIMARY KEY除外)逐个插入到新数据库中。