HomeMedia: cleaning_MySQL_for_MediaWiki - HomeMedia

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

cleaning_MySQL_for_MediaWiki Очистка базы не через движок

#1 Пользователь офлайн   YurNik Иконка

  • Продвинутый
  • PipPip
  • Группа: Обитатель
  • Сообщений: 60
  • Регистрация: 27 Январь 06

Отправлено 23 Октябрь 2011 - 00:49

После атаки вандалов чищу вики-портал. Делаю это не через движок (там нормально организовано удаление страницы, участника, файла и проч.), а левым заходом - так быстрее, когда убираешь групповые записи. В частности, файлы лежат на удаленном сервере поддержки отдельно от вики в специальной папке - в хранилище файлов. Оттуда я ненужное могу быстро выкинуть. Но в разных разделах базы MySQL будут болтаться записи про эти файлы. Эти записи надо найти и удалить, чтобы никаких следов не было. Отсюда вопрос: Как составить фразу SQL-запроса по всей базе во всех таблицах, если хочу найти упоминание фрагмента имени файла, например %Statisti%, хотя бы где-нибудь в базе? Я пробовал по всякому, но поскольку не образован по теме БД, пока у меня не получилось. Поможете?
0

#2 Пользователь офлайн   NoSS Иконка

  • Новичок
  • Pip
  • Группа: Обитатель
  • Сообщений: 34
  • Регистрация: 23 Март 07

Отправлено 23 Октябрь 2011 - 20:36

SELECT *
FROM table_name
WHERE (
`field_name` LIKE '%%your_string%%'
OR `field_name1` LIKE '%%your_string%%'
OR `field_nameN` LIKE '%%your_string%%'
)

0

#3 Пользователь офлайн   YurNik Иконка

  • Продвинутый
  • PipPip
  • Группа: Обитатель
  • Сообщений: 60
  • Регистрация: 27 Январь 06

Отправлено 24 Октябрь 2011 - 23:32

Просмотр сообщенияNoSS (23 Октябрь 2011 - 19:36) писал:

SELECT *
FROM table_name
WHERE (
`field_name` LIKE '%%your_string%%'
OR `field_name1` LIKE '%%your_string%%'
OR `field_nameN` LIKE '%%your_string%%'
)

Спасибо большое. Попробовал - получилось.
Итак, правильно ли я понял, что если в моей базе 41 таблица, мне, чтобы найти в ней встречающийся хоть где-нибудь определенный кусок текстовой строки, надо сделать 41 запрос, и в каждом указать все колонки (field_name*), находящиеся в каждой таблице? Я надеялся, что существует форма глобального поиска если не по всей базе, то хотя бы по таблице, чтобы имена колонок не приходилось вводить. Наверное все-таки внутри одной таблицы такой глобальный поисковый SQL-запрос можно сформулировать. Или я не прав, тогда простите, пож..
ЮрНик
0

#4 Пользователь офлайн   Vega_soul Иконка

  • Новичок
  • Pip
  • Группа: Посетитель
  • Сообщений: 42
  • Регистрация: 06 Октябрь 11

Отправлено 25 Октябрь 2011 - 15:07

Если использовать метаданные, то можно получить названия всех таблиц, колонок в бд:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
Тупой физической работе предпочитаю интеллектуальное рас3.14здяйство (с).
0

#5 Пользователь офлайн   YurNik Иконка

  • Продвинутый
  • PipPip
  • Группа: Обитатель
  • Сообщений: 60
  • Регистрация: 27 Январь 06

Отправлено 25 Октябрь 2011 - 23:46

Спасибо большое. Буду дальше разбираться.
0

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей