我有一个差异文件,我想处理添加/删除/修改以更新 SQL 数据库。
+NameA|InfoA1|InfoA2
-NameB|InfoB1|InfoB2
+NameB|InfoB3|InfoB2
-NameC|InfoC1|InfoC2
-NameD|InfoD1|InfoD2
-NameE|InfoE1|InfoE2
+NameD|InfoD1|InfoD3
+NameE|InfoE3|InfoE2
使用 Python 脚本,我首先使用正则表达式检测以下两行来处理像 B 这样的修改。
re.compile(r"^-(.+?)\|(.*?)\|(.+?)\n\+(.+?)\|(.*?)\|(.+?)(?:\n|\Z)", re.MULTILINE)
我删除了所有匹配的行,然后重新扫描我的文件,然后像添加/删除一样处理所有这些行。我的问题是像 D & E 这样的行。目前我将它们视为两次删除,然后是两次添加,并且我的 SQL 数据库中有 CASCADE DELETE 的后果,因为我应该将它们视为修改。
我该如何处理此类修改 D & E?
diff 文件之前是由 bash 脚本生成的,如果需要,我可以以不同的方式处理它。