Merging Activerecord databases

14 views
Skip to first unread message

giorgio

unread,
Dec 12, 2010, 5:31:33 PM12/12/10
to Ruby on Rails: Talk
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

Marnen Laibow-Koser

unread,
Dec 13, 2010, 11:00:02 AM12/13/10
to rubyonra...@googlegroups.com
giorgio wrote in post #967970:

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
mar...@marnen.org

--
Posted via http://www.ruby-forum.com/.

giorgio

unread,
Dec 13, 2010, 7:18:49 PM12/13/10
to Ruby on Rails: Talk
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

Marnen Laibow-Koser

unread,
Dec 13, 2010, 8:01:13 PM12/13/10
to rubyonra...@googlegroups.com
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
mar...@marnen.org

Sent from my iPhone

Reply all
Reply to author
Forward
0 new messages