Здравствуйте!
Знающие IT-специалисты подскажите с bash-скриптом. Не знаю синтаксиса, поэтому прошу помощи.
Требуется найти и заменить значения всех ячеек в таблицах удовлетворяющих условию `id`='15'.
Всё бы просто, но замену требуется провести во всех БД на сервере. Количество и названия БД неизвестны, поэтому, как я думаю, надо сделать запрос из под root-а
PHP код:, а дальше циклом пробежаться по всем полученным БД и выполнить запрос:
show database;
PHP код:Все БД, в которых требуется провести замену, начинаются в названии с "db".
UPDATE `table` SET `col`='value' WHERE `id`='15';
Скрипт будет запускаться из консоли, поэтому вариант реализации рассматриваю только через bash.
Подскажите, пожалуйста.
- 14.04.2014 22:33
- Регистрация: 16.04.2011
- Сообщений: 150
- Репутация: 48
- 15.04.2014 08:51
FullHouse, из консоли можно запускать скрипт, написанный на любом языке (PHP, Perl, JavaScript, Python и т.п.). Задача, стоящее перед вами вызывает удивление, т.к. не исключено что вы недопоняли задание.
Вернусь к теме: реализацию напишите на любом известном Вам языке программирования, используя вложенные циклы (базы данных, таблицы баз). - 15.04.2014 09:25
FullHouse,во первых надо зайти в субд. если MySQL то
mysql -u root -p жмем ентер, вводим пароль от рута. затем уже и остальные торты калякать. Не прощели через какой-нибудь phpmyadmin и подобные вещи сделать? - 15.04.2014 12:41
- Регистрация: 16.04.2011
- Сообщений: 150
- Репутация: 48
Спасибо! Но это вы недопоняли задание - мне надо bash, а не костыли через php или js - у меня не сервер node.
Не думал, что меня будут убеждать сделать по-другому - скрипт будет решать не только данную задачу. Переписать значение ячеек это только часть кода.
Конечно можно придумывать костыли и запускать через bash - php, но это некрасиво и убого.
Спасибо, я знаю как подключиться к серверу mysql из консоли - вопрос в том, как сделать выбору и цикл по ней?
Нет, через phpMyAdmin абсолютно ни чем не проще, так как всё его отличие от консоли - это графическая оболочка. - 15.04.2014 14:52
- Регистрация: 16.04.2011
- Сообщений: 150
- Репутация: 48
Решение на PHP, может кому пригодится:
PHP код:Вопрос всё ещё в силе.$link = mysql_connect('localhost', 'root', 'password');
$res = mysql_query("SHOW DATABASES");
$i = 0;
$db = Array();
while ($row = mysql_fetch_assoc($res)) {
if (strstr($row['Database'], 'db'))
{
$db[$i] = $row['Database'];
$i++;
}
}
foreach ($db as $key => $value) {
mysql_select_db($value);
$query = "UPDATE `table` SET `col`='value' WHERE `id`='15'";
$result = mysql_query($query);
echo $value.' — OK<br />';
}
- 15.04.2014 19:23
echo "show databases" | /path/to/mysql -u root --password="mysql root pw" | sed -e 's/^/update \`/' | sed -e 's/$/.table\` set col="value" where id=15/' | /path/to/mysql -u root --password="mysql root pw"
минусы - не секурно. рутовский пароль в командной строке - не комильфо. но по другому вашу задачу не решитьСпасибо сказали:
FullHouse(17.04.2014), - 17.04.2014 14:53
- Регистрация: 16.04.2011
- Сообщений: 150
- Репутация: 48
Спасибо! Сейчас попробуем.
- 17.04.2014 15:01Вы, похоже, не совсем хорошо представляете предметную область, ошибочно полагая, что PHP это костыли, а баш:Конечно можно придумывать костыли и запускать через bash - php, но это некрасиво и убого.Код:это образец наиправильнейшего решения
echo "show databases" | /path/to/mysql -u root --password="mysql root pw" | sed -e 's/^/update \`/' | sed -e 's/$/.table\` set col="value" where id=15/' | /path/to/mysql -u root --password="mysql root pw"
Открою Вам секрет, что "из коробки" существует возможность писать идеологически верные скрипты, запускаемые из терминала. Погуглите PHP CLI. - 02.05.2014 19:23
- Регистрация: 07.12.2013
- Сообщений: 25
- Репутация: 2
зачем усложнять? adminer, Не?
Тэги топика:
Похожие темы
Темы | Раздел | Ответов | Последний пост |
---|---|---|---|
Bash in Quote - Парсер цитат bash.im [3$] | Софт, скрипты, лицензии | 17 | 18.04.2013 17:23 |
SEO и Linux | Вопросы от новичков | 7 | 07.08.2012 12:34 |
Небольшой движок a-la bash.org.ru | Web программирование | 4 | 15.12.2011 02:21 |
Обнаружен shell залитый в NetCet | Web программирование | 9 | 09.12.2011 16:14 |
Помощь по Linux | Хостинг и Серверы | 0 | 12.11.2011 01:13 |