помогите с простеньким sql-запросом

12
HJ
На сайте с 14.02.2006
Offline
274
848

Подскажите пожалуйста sql-запрос, чтобы во всей базе данных db_name заменить строчку "xxxxx" на "yyyyy", во всех полях всех таблиц

J
На сайте с 02.02.2009
Offline
53
#1

Нельзя так простенько сделать :)

HJ
На сайте с 14.02.2006
Offline
274
#2
jumash:
Нельзя так простенько сделать :)

Придётся отдельно для каждого поля каждой таблицы? А так как сделать? :o

iNd
На сайте с 20.03.2009
Offline
122
iNd
#3

можно думаю в несколько запросов:

1. запрос на вывод всех таблиц.

2. запрос на вывод строк где столбы содержат "хххх"

3. заменить строку "хххх" строкой "ууу"

4. загрузить

:-)

J
На сайте с 02.02.2009
Offline
53
#4

Проще всего скриптом

Алгоритм такой

SHOW TABLES

потом по каждой таблице DESC TABLE

парсите результат и делаете запросы соответствующие в цикле

jumash добавил 09.06.2009 в 17:02

на перле кстати только что набросал


#!/usr/bin/perl -w
use strict;
use DBI;
my $dbh = .....; # соединение с БД
my @x = map $_->[0], @{$dbh->selectall_arrayref(qq[SHOW TABLES;])};
foreach my $table (@x){
print qq[Совершаю насилие над таблицей $table\n];
my @y = map $_->[0], @{$dbh->selectall_arrayref(qq[DESC $table])};
foreach my $field (@y) {
print qq[Обнаружено поле $field\n];
$dbh->do(qq[UPDATE $table SET $field='xxxx' WHERE $field='yyyy']);
print qq[Замена в поле $field совершена\n];
}
}
$dbh->disconnect;

перенос строки слеш эн порезался парсером - ну там в целом понятно что и где

HJ
На сайте с 14.02.2006
Offline
274
#5

К сожалению, немного не подходит. Строка xxxx не является значением какого-то поля, это текст, который встречался в разных полях вразном окружении.

Т.к. я не програмер, сделал так: экспортировал целиком базу, прогнал автозамену в блокноте и импортировал вместо старой :)

J
На сайте с 02.02.2009
Offline
53
#6

Тоже вариант :)

S
На сайте с 21.05.2006
Offline
209
#7

А такой случай:

Есть запись: Xxxxx, yyyy, Zzzzzz

Нужно после запятой перед Заглавной (только перед Заглавной) буквой вставить "QQQQ"

Кто поможет?

iNd
На сайте с 20.03.2009
Offline
122
iNd
#8
happy-joker:
К сожалению, немного не подходит. Строка xxxx не является значением какого-то поля, это текст, который встречался в разных полях вразном окружении.

Т.к. я не програмер, сделал так: экспортировал целиком базу, прогнал автозамену в блокноте и импортировал вместо старой :)

есть маленький ньюанс: а если в названии полей, таблиц или же в их свойствах будет встречатся эта строка? ) тока вся база к чертям

J
На сайте с 02.02.2009
Offline
53
#9
shav:
А такой случай:
Есть запись: Xxxxx, yyyy, Zzzzzz
Нужно после запятой перед Заглавной (только перед Заглавной) буквой вставить "QQQQ"
Кто поможет?

Ок, обьявим соревнование - кто сможет в мой код добавить эту штуку - тот автоматически получает приглашение на собеседование в крупную корпорацию:)))

Если ТС захочет узнать решение - велкам ко мне в асю :)

jumash добавил 09.06.2009 в 23:36

iNd:
есть маленький ньюанс: а если в названии полей, таблиц или же в их свойствах будет встречатся эта строка? ) тока вся база к чертям

В целом чушь, но утверждение, конечно, правильное

Тут надо юзать регулярки если позволяет текстовый редактор, конечно))))

Я юзаю EditPlus и там это решается просто на ура регулярками :)

iNd
На сайте с 20.03.2009
Offline
122
iNd
#10
jumash:
В целом чушь, но утверждение, конечно, правильное

Тут надо юзать регулярки если позволяет текстовый редактор, конечно))))

Я юзаю EditPlus и там это решается просто на ура регулярками

вам дурно, батенька?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий