2011-07-18 4 views
14

Je travaille sur la suppression des doublons d'une base de données existante pour un de mes clients, et j'ai trouvé une requête MySQL pour faire exactement cela. Je veux créer une tâche Rake pour exécuter la requête pour le serveur de production. Comment ferais-je cela?Comment exécuter une requête MySQL à partir d'une tâche rake?

requête MySQL:

select * from community_event_users; 
    create table dups as 
     select distinct username, count(*) 
     from community_event_users group by username 
     having count(*) > 1; 
    delete community_event_users from community_event_users inner join dups 
    on community_event_users.username = dups.username; 

    insert into community_event_users select username from dups; 

Répondre

21

Si vous êtes sur Rails et en utilisant ActiveRecord vous pouvez simplement utiliser:

ActiveRecord::Base.execute(my_sql) 

ActiveRecord::Base.connection.execute(my_sql) 

Où my_sql est votre chaîne SQL.

+0

Je pense que vous devez vous assurer de toujours appeler l'environnement avec le symbole =>. –

+0

Ceci est sur Rails 2.3.8; Lorsque j'exécute la tâche rake avec 'Activerecord :: Base.execute (my_sql)', j'obtiens une erreur de méthode non définie pour la commande execute. –

+0

comment appelez-vous votre tâche râteau? Comment est-ce défini? Cela inclut-il la tâche: environment? – kain

Questions connexes