如何将多个SQLIte DB的表的内容复制到一个新的SQLIte DB

时间:2017-08-08 04:30:36

标签: database sqlite

我有几个DB有一个名为tbl_server_NE_details;

的表

数据库是; SERVER_1.db, SERVER_2.db, SERVER_3.db, SERVER_4.db

每个人都有一个表tbl_server_NE_details

我想将所有tbl_server_NE_details的内容复制到新的db;

SERVER_ALL.db

这应该包含一个表tbl_server_NE_details,它应该包含来自所有单个DBS的内容。

以下命令适用于一个表但不适用于所有表;

sqlite3 SERVER_1.db“.dump tbl_server_NE_details”| sqlite3 SERVER_ALL.db

1 个答案:

答案 0 :(得分:1)

一般

使用附加数据库(https://www.sqlite.org/lang_attach.html)。 这使您可以轻松地将数据从一个数据库移动到另一个数据库。

例如,要将表a从数据库one.db复制到数据库two.db中的表b,您可以:

sqlite3 one.db

然后在提示符处:

attach database "two.db" as two;
create table two.b as select * from a;

此方法不会复制表的架构。如果你想 在附加后镜像您必须执行的架构:

create table two.b <rest of the statement>;
insert into two.b select * from a;

您需要的解决方案

您可以简单地附加每个不同的数据库,并将其内容插入到包含所有元组的数据库/表中。 您可以使用“detach database”断开每个数据库一次 你不再需要它们了(sqlite可以同时附加数据库的数量有限制。)

您可以先运行问题中指明的命令开始:

sqlite3 SERVER_1.db ".dump tbl_server_NE_details" | sqlite3 SERVER_ALL.db

为每个其他数据库执行以下操作(替换SERVER_2.db 使用相应的名称:运行sqlite3 SERVER_2.db,然后:

attach database "SERVER_ALL.db" as all; 
insert into all.tbl_server_NE_details select * from tbl_server_NE_details;

您可以轻松编写此操作的脚本。