Заменить все экземпляры строки в базе данных? - PullRequest
1 голос
/ 24 марта 2012

Какой самый эффективный способ циклически проходить по всем записям в таблице и заменять все вхождения строки другим.

Например, у меня есть какой-то устаревший код bb, который я хочу заменить ...

Заменить: [img]/images/emoticons/happy.png[/img] или <img src="/images/emoticons/happy.png">

На: :)

1 Ответ

0 голосов
/ 24 марта 2012

Самый быстрый способ - сделать всю работу базы данных:

connection.execute(%q{
    update your_table
    set your_column = replace(
        replace(
            your_column,
            '<img src="/images/emoticons/happy.png">',
            ':)'
        ),
        '[img]/images/emoticons/happy.png[/img]',
        ':)'
    )
})

Если в вашей исходной или целевой строках есть кавычки (или если вы не пишете их вручную), используйте connection.quote:

from1 = connection.quote('<img src="/images/emoticons/happy.png">')
from2 = connection.quote('[img]/images/emoticons/happy.png[/img]')
to    = connection.quote(':)')
connection.execute(%Q{
    update your_table
    set your_column = replace(replace(your_column, #{from1}, #{to}), #{from2}, #{to}))
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...