Yes it's possible. At least I think so. I have started this project (for my company), but not totally finished it. In general I looked for all db tables with id_shop or similair columns. Then I wrote some helper functions, how to merge them. Cause sometimes you want to hold the information, sometimes just delete it.
Example:
ps_orders you surely want to hold, so you just rewrite the id_shop from 2 to 1
ps_product_lang you want to check, if the product was already existing in shop 1. If yes, you probably just want to delete the rows for shop 2, otherwise you probably want to rewrite 2 to 1.
All this worked fine for me. But honestly, I haven't finished the project yet. In my BO I still have the 3 shops. But not because I fear any issue. I just didn't have time to finish this project cleanly.
Maybe @datakick can shortly answer, if he sees any potential problem with my advise!?