[Android Apps and Games] ztedd:
Merge multiple sqlite database files

Merging of multiple whatsapp databases is still on the feature request list.

But you can use this tool to merge two sqlite databases and afterwards convert the merged database with Whatsapp Xtract:

SQLite Compare

http://www.codeproject.com/Articles/220018/SQLite-Compare-Utility

HOW TO MERGE SQLITE DATABASE FILES WITH SQLite Compare:

1. Open the old database file in SQLite Database Browser ( http://sqlitebrowser.sourceforge.net/ ). Open the table messages in Browse Data. Press the Button " > " as often as necessary to get to the last page. Scroll down to the last message. Now write down the number (_id) of that last message, e.g. 65422

2. Now open the new database file in SQLite Database Browser. Open the table messages in Browse Data. Click on the first entry (which has most fields with value "-1"). Click on Delete Record. Have a look at the now first entry and write down the number (_id) of that first message, e.g. 12

Now Click on Execute SQL and execute the following SQL statement:

UPDATE messages set _id = (65422 + 1 + _id - 12)

(replace 65422 by your last message _id in the old database and 12 by your first message _id in the new database)

3. Now all messages in the new database have the correct _id's.

Click on Save. Close all windows of SQLite Database Browser.

4. Download & Install SQLite Compare ( http://www.codeproject.com/Articles/220018/SQLite-Compare-Utility ). Open SQLite Compare.

5. File - Compare

For example:

Left file: msgstore-2012-06-01.1.plain.db

Right file: msgstore-2012-06-07.1.plain.db

(Make sure to have a backup of both files!)

x Compare schema and data

x Compare BLOB fields

OK

6. Double Click on table "messages" in the result window OR left click on table "messages" and hit button "Edit selected difference..."

7. A new window opens, "Table messages"

Click on blue button "R" (it's located after "Refresh Comparison", "L" and before "≠", "=")

8. Now on the right side all messages are shown that aren't included in the left file.

Now you can select multiple messages (first left click on the first message to select, then scroll down to the last message to select and press SHIFT + left click on the last message to select).

I noticed that you can't handle too many messages at once as it produces an error. Just try. I succeeded with about 1000-1500 messages.

Now click on the button with the arrow from right to left: ←

Now the selected messages are copied from the right database to the left database.

9. Repeat the steps in (8.) until all the messages are copied from the right file to the left file.

10. Maybe you also need to to this for the table chat_list if there are some new chat contacts in the newer backup file.

11. Now the left file (e.g. msgstore-2012-06-01.1.plain.db) contains all the messages from the prior file msgstore-2012-06-01.1.plain.db and the newer file msgstore-2012-06-07.1.plain.db. (No saving necessary as the tool automatically applies the changes to the file after pressing the ← button).

12. Now you have 3 options how to go on:

a) Do you want to merge another database file, appending it to the merged file? Then repeat the steps with an even newer database file on the right, e.g. msgstore-2012-06-12.1.plain.db, if you have multiple database files to merge.

b) Do you want to import the merged database file to Whatsapp? Then rename the merged database file (the left one) to "msgstore.db", copy it to the sdcard to location /sdcard/WhatsApp/Databases/msgstore.db and make sure that it's the only file in that folder. Now install Whatsapp and confirm when asked to import the Backup during installation.

c) Or do you want to convert the merged database file to browser-friendly html using Whatsapp Xtract? Then give the left file msgstore-2012-06-01.1.plain.db to Whatsapp Xtract, e.g. using drag and drop onto the whatsapp_xtract_drag'n'drop_database(s)_here.bat.