【发布时间】:2014-09-03 03:29:00
【问题描述】:
我有两个数据库,比如说 A_old.sqlite 和 A_new.sqlite。
两者都有很多表,但新数据库有一个(或多个)表,字段数不相等。
例如:
- A_old.sqlite 有表 Person 字段名称和姓氏。
- A_new.sqlite 有表 Person 字段名称、姓氏和地址。
我可以从 shell 转储每个数据库并查看差异在哪里:
echo .dump | sqlite3 A_old.sqlite > A_old.sqlite.dump
echo .dump | sqlite3 A_new.sqlite > A_new.sqlite.dump
diff A_old.sqlite A_new.sqlite
问题是:如何在不手动解析 diff 输出的情况下更新 OLD db 中的模式? (在这种情况下,我需要将字段“地址”添加到表 Person)
【问题讨论】:
-
我不确定我是否理解您的问题。您想在不看差异的情况下说出两件事之间的区别吗?您期待什么样的解决方案?这怎么能行?我不是在讽刺——只是希望你的解释有助于理解这个问题。
-
我的意思是“手动”解析差异输出。我尝试使用“补丁”程序,但我不确定我需要什么。
-
所以您想自动化/编写更新过程 - 是吗?那么这个脚本只会告诉你缺少的字段名称,还是更新每条记录中的所有字段?它必须检测到哪里还有其他字段并删除它们吗?它也必须检测到丢失的表吗?
-
基本上我只需要更新架构。因此,如果有新表,请添加它。如果表中有新字段,请更新它。如果已删除表,请将其删除。等等。 Diff 肯定是一个起点,但我想避免编写解析器并启动 sql 命令..
-
搜索
database version control喜欢这里techportal.inviqa.com/2011/01/11/database-version-control