将所有SQLite数据库与不同的表合并

tdi*_*ihp 3 python sqlite merge

是否有一种廉价/快速的方法将SQLite数据库文件与不同的表合并?

例如:

  • a.db 只有桌子 a
  • b.db 只有桌子 b
  • ...

我想这些合并成一个abcd.db包含所有a,b,c,和d.

我想我想要的是这样一个神奇的剧本:

merge_script a.db b.db c.db d.db -o abcd.db
Run Code Online (Sandbox Code Playgroud)

我已经注意到这个提示和另一个技巧和ATTACH技巧,它将所有记录插入"主"数据库,但是我可以在"主"数据库中没有表时执行此操作吗?

UPDATE

我使用SQLIte数据库文件作为简单的存储容器.

在大多数情况下,我将每种类型的数据(不同于表名)存储在一个文件中,然后将它们合并到"目标"数据库中.

但是有些类型的数据应该在同一个表名中.如果使用sqlite3 .dump,那么tablename就会发生冲突.

然而,这种.dump方法非常简单,我只是做一些解决方法并使用它.

Pau*_*ine 6

只需转储和恢复:

for db in a, b, c, d; { sqlite3 ${db}.db .dump | sqlite3 abcd.db }
Run Code Online (Sandbox Code Playgroud)

[更新]

另一个问题,是否有任何快速解决方法,如果表格不是唯一的,我想合并内容?tdihp

这个问题有点过于宽泛.例如,你会对主键违规做什么?我会使用像Python这样的脚本语言来处理错误条件(sqlalchemy.SqlSoup对于这种事情非常好).

也就是说,如果您知道该表已经存在并且没有唯一约束,那么您可以使用某些adhoc bash特技 - 假设destinationtablename和sourcetablename具有相同的结构:

$ ( echo '.mode insert destinationtablename'
    echo 'select * from sourcetablename;' 
  ) |  sqlite3 -batch -init - source.db \
    |  sqlite3 -batch destination.db
Run Code Online (Sandbox Code Playgroud)

您可能不知道在此站点中长评论线程被认为是粗鲁的,而是鼓励您更新您的问题.一个更好的问题是:

  • 帮助其他有类似问题的用户
  • 为您赢得声望点,为您提供特权(积分也可以用于以后奖励)