我有几个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
答案 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;
您可以轻松编写此操作的脚本。