1
我有一個diff文件,我想處理添加/刪除/修改以更新SQL數據庫。在diff文件中處理修改
+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腳本生成的,如果需要,我可以以不同的方式處理它。
這不是一個好的正則表達式的應用。只需遍歷行,記錄字典中的刪除和添加。如果一個密鑰在兩個字典中,這是一個修改。 – Barmar