如何將密切好友的微信聊天記錄恢復到本身的微信中

本文版權歸cxun全部,若有轉載請註明出處與本文連接,謝謝!
原文地址:http://www.cnblogs.com/cxun/p/4544000.html

 

在手機中把與本身聯繫好幾年的好友的聊天記錄不當心刪除了,痛苦萬分,好在對方的手機裏還有一份完整的聊天記錄,想把對方的聊天記錄轉移到本身的手機中來,如下是具體的補救方法。html

使用軟件:SQLite Expert、iToolssql

適用手機:iPhone數據庫

假設A手機是誤操做刪除記錄的手機,B手機是完整數據源手機。微信

1.備份ide

首先,先把B手機的數據備份好,建議使用iTools(如今已更新到3.0,本文截圖依然是1.0的),找到微信App中的文檔文件夾Documents,整個複製到本地硬盤保存起來吧。工具

2.計算MD5值spa

首先要弄清楚雙方微信ID用戶名的MD5值,這個很重要,在後面操做過程當中極易弄混淆。在Documents中,會有若干個MD5哈希值爲名稱的文件夾,若是該手機只登陸過一個微信賬號,就會只有一個MD5哈希值的文件夾;若是有多個,你不知道哪一個纔是你經常使用微信賬號文件夾的話,告訴你一個辦法,哪一個文件夾佔用空間大,哪一個就是你經常使用的。那麼,這個文件夾名稱就是A手機微信ID哈希值,如下簡稱「A_HASH」。code

依次打開其內部文件夾,找到聊天記錄核心文件:MM.sqlite,很明顯,是個sqlite數據庫文件。視頻

使用數據庫軟件打開,這裏推薦使用SQLite Expert,我的版是免費的。在左側樹狀圖中找到好友數據表「Friend」,其中,UsrName字段就是每一個好友的微信ID用戶名,NickName字段就是好友的暱稱,能夠經過暱稱找到B手機的微信ID用戶名,而後使用MD5計算工具算出它的MD5值,如下簡稱「B_HASH」。sqlite

3.複製聊天記錄

首先把A手機的數據庫文件複製到本地,即「/Documents/A_HASH/DB/MM.sqlite」,使用SQLite Expert打開,在左側樹狀圖中找到想恢復的好友的數據表「Chat_B_HASH」,這裏有兩個狀況,分開討論:

(1)若是是剛剛在A手機中誤刪除的,且沒有與B發生事後續通訊,該表則不存在,點擊SQLite Expert的SQL標籤頁,輸入SQL語句建立該表:

SQL語句以下(記得改成正確的「B_HASH」):

CREATE TABLE [Chat_B_HASH]
(TableVer INT4,
MesLocalID INTEGER PRIMARY KEY,
MesSvrID INTEGER,
CreateTime INTEGER,
Message TEXT,
Status INTEGER,
ImgStatus INTEGER,
Type INTEGER,
Des INTEGER);

按F5,若是沒報錯的話,則該數據表建立成功。

(2)若是在A手機中誤刪除以後,與B產生了新的通訊,則該數據表已存在,且存有刪除後的通訊數據。因爲一會要把B手機密切好友的全部聊天記錄複製到A手機中,此時A手機與B好友的聊天數據已沒有意義,爲了不出現數據重複與其它未知的錯誤出現,建議將A手機中與B好友的數據刪除。刪除方法是在左側樹狀圖中點擊B好友的數據表「Chat_B_HASH」(千萬別點錯),在SQL標籤頁中輸入SQL語句並執行:

delete from Chat_B_HASH

同時,還要使用iTools在iPhone中刪除與B好友聊天記錄相關的語音、圖片、視頻等文件(不放心的話能夠先把這些數據備份出來),在iTools中找到這3個文件夾,在文件列表中按「CTRL + A」全選,按「Del」刪除。

/Documents/A_HASH/Audio/B_HASH
/Documents/A_HASH/Img/B_HASH
/Documents/A_HASH/Video/B_HASH

接下來就是重頭戲了,要把B手機中與A聊天的記錄複製到A的數據庫文件MM.sqlite中。首先找到並使用SQLite Expert打開第1步中B手機的數據庫文件「\Documents\B_HASH\DB\MM.sqlite」,在左側樹狀圖中找到A的微信數據表「Chat_A_HASH」,點擊,在右側選擇「Data」標籤頁,點擊表中數據任意記錄,按「CTRL + A」全選(數據量很大的話須要等幾秒纔有反應),再按「CTRL + C」複製,而後在左側樹狀圖中選擇A手機的數據庫,找到剛纔3.(1)步建立或3.(2)步刪除數據的數據表「Chat_B_HASH」,在右側「Data」標籤頁下的數據記錄位置中點擊一下,按「CTRL + V」粘貼(數據量很大的話也要等幾秒纔有反應),完成數據的複製。爲了不將A和B的數據庫弄混淆,複製完後最好把B的數據庫關閉。

4.修改收信與發信的標誌位

因爲在B手機的微信中,看到的聊天記錄中A是在左邊,B是在右邊,A的對話框泡泡是白色,B的是綠色,如今數據直接複製到A的數據庫文件中後,須要將二者的發信收信標誌位交換,才能在A的手機中正確顯示,不然的話會看到本來是A說的話,變成B說的話了。

在SQLite Expert中,點擊剛纔粘貼的數據表「Chat_B_HASH」,點擊右側的「SQL」標籤頁,依次輸入並執行如下SQL語句:

update Chat_B_HASH set des=2 where des==0
update Chat_B_HASH set des=0 where des==1
update Chat_B_HASH set des=1 where des==2

切記!這3條語句要一條接一條地執行!即:輸入第1條,按一次F5,刪掉,再輸入第2條,再按一次F5,再刪掉,而後再輸入第3條,按一次F5,完畢!

5.修改視頻數據的標誌位

這一步若不執行的話,在最後完成後會形成A手機中視頻旁邊出現感嘆號的問題。在SQLite Expert中,點擊剛纔粘貼的數據表「Chat_B_HASH」,點擊右側的「SQL」標籤頁,輸入並執行如下SQL語句:

 

update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="0"','status="4"') where type=43 and des=1; 
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="1"','status="4"') where type=43 and des=1;
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="2"','status="4"') where type=43 and des=1;
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="3"','status="4"') where type=43 and des=1;
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="0"','status="3"') where type=43 and des=0; 
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="1"','status="3"') where type=43 and des=0;
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="2"','status="3"') where type=43 and des=0;
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'status="4"','status="3"') where type=43 and des=0;

若最後完成後仍發現視頻旁邊有感嘆號出現,請使用終極方法:拿另外一臺iPhone C,經過WIFI聊天記錄遷移的方式遷移到C手機,再遷移回A手機。在遷移過程當中會自動修復。

另外,若是B手機的聊天記錄是從Android版本的微信遷移過來的,須要執行如下SQL語句,緣由是老版的Android微信將視頻格式的標誌位存儲爲「44」,須要改爲「43」:

update Chat_B_HASH set type=43 where type=44
update Chat_B_HASH set message=replace(cast(message as varchar(80000)) ,'type="44"','type="43"') where type=43

 6.複製數據到A手機

進行以上數據庫修改操做以後,關閉SQLite Expert(不然複製回iPhone會出錯),將修改好的MM.sqlite文件使用iTools導入回A手機微信APP的相應文件夾,即:「/Documents/A_HASH/DB/MM.sqlite」

而後是將B手機中與A聊天的語音、圖片、視頻導入到A手機微信APP的相應文件夾中,假設在第1步中從B手機備份出來的Documents文件夾存放在D盤,使用iTools將這三個文件夾中的全部文件拖入A手機的微信APP對應的文件夾中:

D:\Documents\B_HASH\Audio\A_HASH  --->  iTools:/Documents/A_HASH/Audio/B_HASH (文件後綴是:*.aud 等等)
D:\Documents\B_HASH\Img\A_HASH  --->  iTools:/Documents/A_HASH/Img/B_HASH (文件後綴是:*.pic 與 *.pic_thum 等等)
D:\Documents\B_HASH\Video\A_HASH ---> iTools:/Documents/A_HASH/Video/B_HASH (文件後綴是:*.mp4 與 *.video_thum 等等)

 

結語:

在本文的這些操做中,難點就是將A與B弄混淆,所以,在進行此項工做之前,對A與B手機的備份顯得尤其重要,一旦弄錯,還能夠重頭再來。

相關文章
相關標籤/搜索