在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中处理它的速度和速度要快得多。我的意思是,当SQL可以更好地处理它时,为什么要将它们转换为API中的循环?
答案 0 :(得分:0)
我会将所有替换转换为Ruby代码,然后使用runner来运行它。类似的东西:
Dvd.all.each do |dvd|
# your substitutions here
dvd.actor= dvd.actor.gsub(/foo/,'bar')
dvd.save
end