2012-11-13 1 views
2
class Profile < ActiveRecord::Base 
    has_many :favorites, :dependent => :destroy 
    has_many :friends, :dependent => :destroy 
end 

Je dois smth comme ceci:La meilleure façon de vider une table de base de données avec limite et toute association

mysqldump --opt --where="1 limit 1000" -uroot development profiles > profiles.sql 

Mais cette décharge contient (comme prévu) seulement 1000 profils rangs, sans amis associations, favoris.

Dois-je le faire en utilisant YAML ou comment dois-je le faire?

+0

décharge les trois tables, puis supprimer des profils avec id> 1000 – klochner

+0

Je pense qu'il est mauvaise idée , parce que j'ai plus de 18 millions d'enregistrements – zolter

+0

que diriez-vous d'un script qui trouve les clés primaires pour tous les favoris/amis liés aux 1000 premiers utilisateurs, alors vous pouvez faire une sauvegarde séparée pour ces tables – klochner

Répondre

5

Prenez 5000 premiers enregistrements:

mysqldump --opt --where="1 limit 5000" -uroot development profiles > profiles.sql 

Ensuite, trouver tous associés à ce enregistrements amis:

mysqldump --opt --lock-all-tables --where="profile_id IN (SELECT * FROM (SELECT id FROM profiles LIMIT 5000) temp);" -uroot development friends > friends.sql 
Questions connexes