Si sus bases de datos son exactamente los mismos (los datos no requiere un tratamiento personalizado) y no hay demasiados registros, usted puede hacer esto (que permite las claves externas):
No comprobado .. . pero se entiende la idea
#All models and their foreign keys
tales = {Patients => [:doctor_id, :hospital_id],
Doctors => [:hospital_id],
Hospitals}
ActiveRecord::Base.establish_connection :development
max_id = tables.map do |model|
model.maximum(:id)
end.max + 1000
tables.each do |model, fks|
ActiveRecord::Base.establish_connection :development
records = model.find(:all)
ActiveRecord::Base.establish_connection :production
records.each do |record|
#update the foreign keys
fks.each do |attr|
record[attr] += max_id if not record[attr].nil?
end
record.id += max_id
model.create record.attributes
end
end
Si usted tiene un montón de discos puede que tenga que parte de esto de alguna manera ... hacerlo en grupos de 10k o algo así.
¿Qué motor de base de datos está utilizando? Además (no tengo mucha experiencia en Rails), ¿asigna Rails los identificadores para nuevos registros o lo hace el motor de la base de datos? – Neall
En Rails, los ids son asignados por la base de datos utilizando un tipo de campo entero de secuencia o autoincrement. – hectorsq