Python 在两个数据库sqlite之间合并差异表
好的,我有一个我写的程序(一些用户控制自动化),它有一个数据库——它正在我的一台服务器上运行,它的版本是1.0 上一次我给这个工具添加了一些升级(所以它的版本是1.5) 我的问题是- 在版本1中,该工具的数据库看起来像-Python 在两个数据库sqlite之间合并差异表,python,database,sqlite,Python,Database,Sqlite,好的,我有一个我写的程序(一些用户控制自动化),它有一个数据库——它正在我的一台服务器上运行,它的版本是1.0 上一次我给这个工具添加了一些升级(所以它的版本是1.5) 我的问题是- 在版本1中,该工具的数据库看起来像- 表a 表b 表c 在版本1.5中,我向数据库中添加了更多的表- 表a 表b 表c 表d 表e 我需要什么 我希望在不丢失生产数据库中的所有生产数据的情况下,将版本1.5中的所有新表添加到版本1的数据库中 只需将所有新表在新数据库和旧数据库之间移动到旧数据库。(数据库之间的差异,
表a
表b
表c
在版本1.5中,我向数据库中添加了更多的表-
表a
表b
表c
表d
表e
我需要什么
我希望在不丢失生产数据库中的所有生产数据的情况下,将版本1.5中的所有新表添加到版本1的数据库中
只需将所有新表在新数据库和旧数据库之间移动到旧数据库。(数据库之间的差异,并将所有差异表推送到旧表)
我知道如何在python中实现这一点,比如-
-从新数据库获取表列表
-从旧数据库获取表列表
-获得不同的表格
-手动将表格从新表格推到旧表格
但在我开始编写代码之前,也许有更简单的方法可以做到这一点?因为我很确定这不仅仅是我的问题
有没有一种方法可以将数据库按这种方式加上边框
Sqlite 3数据库
p、 美国。
不知道这个问题的正确标题是什么,所以如果有人能给你一些建议,那就太好了:)如果你只需要添加缺少的表,而不需要迁移已有表的行和列,你可以通过这种方式来实现
CREATE TABLE
替换为CREATE TABLE(如果不存在)
,并过滤掉所有其他SQL命令只有桌子吗?是否也要迁移它们的行?
$ sqlite3 your_new_db.db
sqlite> .output dump.sql
sqlite> .dump
grep 'CREATE TABLE' dump.sql | sed -e 's|CREATE\ TABLE|CREATE\ TABLE\ IF\ NOT\ EXISTS|g' > add_missing_tables.sql
cat add_missing_tables.sql | sqlite3 your_old_db.db