是否有一种便宜/快速的方法来将 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
我注意到了这个tip和另一个 tip和 ATTACH 技巧,它将所有记录插入“主”数据库,但是当“主”数据库中没有表时我可以这样做吗?
更新
我使用 SQLIte 数据库文件作为简单的存储容器。
在大多数情况下,我将每种类型的数据(根据表名不同)存储在一个文件中,然后将它们合并到“目标”数据库中。
但是有些类型的数据应该在同一个表名中。如果使用 sqlite3 .dump
表名会发生冲突。
然而 .dump
方法非常简单,我将做一些变通方法并使用它。
最佳答案
只需转储和恢复:
for db in a, b, c, d; { sqlite3 ${db}.db .dump | sqlite3 abcd.db }
[更新]
another question, is there any quick fix if tables are not all unique, and I want to merge contents? tdihp
这个问题有点太宽泛了。例如,您将如何处理主键违规?我会使用一些脚本语言(如 Python)来处理错误情况(sqlalchemy.SqlSoup 非常适合这种情况)。
就是说,如果您知道该表已经存在并且没有唯一约束,您可能可以使用一些临时的 bash 特技 - 假设 destinationtablename 和 sourcetablename 具有相同的结构:
$ ( echo '.mode insert destinationtablename'
echo 'select * from sourcetablename;'
) | sqlite3 -batch -init - source.db \
| sqlite3 -batch destination.db
您可能不知道长评论线程在本网站被认为是粗鲁的,相反,我们鼓励您更新您的问题。一个更好的问题是:
- 以后帮助其他有类似问题的用户
- 为您赢得声望点数以赋予您特权(点数也可用于以后的赏金)
关于python - 合并所有具有不同表的 SQLite 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11733581/