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,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

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,

Marnen Laibow-Koser
http://www.marnen.org
[email protected]

Sent from my iPhone