是否有一种廉价/快速的方法将SQLite数据库文件与不同的表合并?
例如:
a.db
只有表格a
b.db
只有表格b
我想将这些内容合并到包含所有表abcd.db
,a
,b
和c
的{{1}}中
我认为我想要的是这样一个神奇的剧本:
d
我注意到了这个tip和另一个tip以及ATTACH技巧,它将所有记录插入“主”数据库,但是我可以在“主”数据库中没有表时执行此操作吗?
更新
我使用SQLIte数据库文件作为简单的存储容器。
在大多数情况下,我将每种类型的数据(不同于表名)存储在一个文件中,然后将它们合并到“目标”数据库中。
但是有些类型的数据应该在同一个表名中。如果使用merge_script a.db b.db c.db d.db -o abcd.db
,则表名中会有冲突。
然而sqlite3 .dump
方法很简单,我只是做一些解决方法并使用它。
答案 0 :(得分:6)
转储和恢复:
for db in a, b, c, d; { sqlite3 ${db}.db .dump | sqlite3 abcd.db }
[更新]
另一个问题,是否有任何快速解决方法,如果表格不是唯一的,我想合并内容? 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
您可能不知道此网站中的长评论帖被认为是粗鲁的,而是鼓励您更新您的问题。一个更好的问题是: