2011-07-18 22 views
14

私はクライアントのためにレガシーデータベースから重複を削除しようとしていますが、私はそれを行うためのMySQLクエリを見つけました。本番サーバーのクエリを実行するRakeタスクを作成したいと思います。どうすればいい?rakeタスクからMySQLクエリをどのように実行しますか?

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; 

答えて

21

あなたがRailsの上にあり、ActiveRecordのを使用している場合、あなたは簡単に使用することができます。

my_sqlはあなたのSQL文字列である
ActiveRecord::Base.execute(my_sql) 

ActiveRecord::Base.connection.execute(my_sql) 

+0

私はあなたが=>でも環境を呼び出すことを確認する必要があると思います。 –

+0

これはRails 2.3.8です。 'Activerecord :: Base.execute(my_sql)'でrakeタスクを実行すると、実行コマンドに未定義のメソッドエラーが発生します。 –

+0

レイクタスクはどうやって呼びますか?どのように定義されていますか?これには:環境タスクが含まれていますか? – kain

関連する問題