2011-12-09 81 views
1

在Rails中,是有辦法在一個語句運行多個SQL查詢,這樣說:Rails的多個SQL查詢

UPDATE `dvd_actor` SET actor = replace(actor, 'Ó', 'Ó'); 
UPDATE `dvd_actor` SET actor = replace(actor, 'Á', CHAR(193)); 
UPDATE `dvd_actor` SET actor = replace(actor, 'É', CHAR(201)); 
UPDATE `dvd_actor` SET actor = replace(actor, 'Í', CHAR(205)); 

在一個單一的查詢。

這是我在PHP中清理數據庫的事情,但Rails在第一次之後給我一個錯誤。我猜這不是Rails的方式,只是好奇Rails中最好的方法是什麼。

目前我有:

self.connection.execute("UPDATE `dvd_actor` SET actor = replace(actor, 'Ó', 'Ó'); 
UPDATE `dvd_actor` SET actor = replace(actor, 'Á', CHAR(193)); 
..." 

編輯: 我要解釋一下,我覺得跟GSUB運行它們是資源的浪費,當它的速度快了很多,並有效地處理它的SQL。我的意思是,爲什麼將它們轉換爲API中的循環時,SQL可以更好地處理它?

回答

0

我會將所有替換代碼翻譯成Ruby代碼,然後使用runner來運行它。例如:

Dvd.all.each do |dvd| 
    # your substitutions here 
    dvd.actor= dvd.actor.gsub(/foo/,'bar') 
    dvd.save 
end 
+0

感謝您的回答,但我應該說明,我認爲使用gsub運行它們會浪費資源,因爲它在SQL中處理速度更快,效率更高。我的意思是,爲什麼將它們轉換爲API中的循環時,SQL可以更好地處理它? – kakubei

+0

那麼你根本不應該使用Rails。寫一個mysql腳本;) – lucapette

+0

我有一個Rails API,我試圖將所有的PHP API遷移到它。 – kakubei