Merging Activerecord databases

I want to merge several identical databases together.

There is obviously a problem in that the primary keys (id) will change when imported and thus any foreign keys that refer to that id will have to be changed as well.

This is all doable but I wonder if there are any plugins that would make this sort of task easier?

Cheers George

giorgio wrote in post #967970:

I want to merge several identical databases together.

There is obviously a problem in that the primary keys (id) will change when imported and thus any foreign keys that refer to that id will have to be changed as well.

This is all doable but I wonder if there are any plugins that would make this sort of task easier?

Have you got foreign key constraints set up in your DBs? If not, do so now (and use Foreigner for your migrations), and make sure cascading updates are on. That will change the foreign keys when the primary keys change. Then renumber your primary keys somehow and merge the DBs.

Or at least that's one idea. If it were just one table, I'd advise doing an SQL dump and insert, but I'm not sure how that would work with associated records.

Cheers George

Best,

Thanks for that idea Marnen,

I will take a look at Foreigner..

I think I would still have problems importing one database into the other ... Say I import "Clients" and all the ids get updated I would need to update all the client_id values on say the adresses table.... but the addresses table may not be imported yet so would not cascade update.

I think you are saying - Change all the primary keys on one of the databases first and then do the merge and the keys will be in mutually exclusive ranges.. I guess I would then possibly need to reset the sequences on the DB..

Whichever way I look has drawbacks!

Cheers George

giorgio wrote in post #968193:

Thanks for that idea Marnen,

I will take a look at Foreigner..

I think I would still have problems importing one database into the other ... Say I import "Clients" and all the ids get updated I would need to update all the client_id values on say the adresses table.... but the addresses table may not be imported yet so would not cascade update.

I think you are saying - Change all the primary keys on one of the databases first and then do the merge and the keys will be in mutually exclusive ranges..

Right.

I guess I would then possibly need to reset the sequences on the DB..

Yes.

Whichever way I look has drawbacks!

How is resetting the sequences a big drawback? It's easy and you'll only need to do it once per DB.

Cheers George

Best,