如果db具有主要字段,如何将N个SQLite数据库文件合并为一个?

时间:2010-07-12 22:51:43

标签: sqlite merge

我有一堆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)

2 个答案:

答案 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除外)逐个插入到新数据库中。