2011-07-18 20 views
14

Estoy trabajando en la eliminación de duplicados de una base de datos heredada para un cliente mío, y he encontrado una consulta MySQL para hacer precisamente eso. Quiero crear una tarea de Rake para ejecutar la consulta para el servidor de producción. ¿Como podría hacerlo?¿Cómo se ejecuta una consulta MySQL desde una tarea de rake?

MySQL consulta:

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; 

Respuesta

21

Si usted está en los carriles y el uso de ActiveRecord puede simplemente usar:

ActiveRecord::Base.execute(my_sql) 

ActiveRecord::Base.connection.execute(my_sql) 

Dónde my_sql es su cadena SQL.

+0

Creo que debe asegurarse de llamar al entorno todavía con => también. –

+0

Esto está en Rails 2.3.8; Cuando ejecuto la tarea de rake con 'Activerecord :: Base.execute (my_sql)', obtengo un error de método indefinido para el comando de ejecución. –

+0

¿cómo llamas a tu tarea de rake? ¿Cómo se define eso? ¿Eso incluye la tarea: entorno? – kain

Cuestiones relacionadas