tdi*_*ihp 3 python sqlite merge
是否有一种廉价/快速的方法将SQLite数据库文件与不同的表合并?
例如:
a.db 只有桌子 ab.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方法非常简单,我只是做一些解决方法并使用它.
只需转储和恢复:
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)
您可能不知道在此站点中长评论线程被认为是粗鲁的,而是鼓励您更新您的问题.一个更好的问题是:
| 归档时间: |
|
| 查看次数: |
1769 次 |
| 最近记录: |