mysql: убирайте мусор из 10k постов WordPress, но сохраняя что-то актуальное - PullRequest
2 голосов
/ 07 декабря 2011

Я - немного мирянин-мирянин и прошу немного помощи.

Я унаследовал сайт WordPress 3.1.0, на котором около 10000 сообщений.Каждое сообщение содержит много не относящихся к делу данных, которые первоначальному владельцу не нужно было использовать, например, наличие данных Google Analytic в каждом сообщении, когда они могли бы использовать плагин (я пытаюсь представить, что они копируют этот код более 10 тысяч раз).

Я хочу очистить посты, но внутри каждого из 10k постов есть две строки включаемых файлов, окруженных "[]", которые я хочу сохранить.

Посты выглядят так:

мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора [include file = "filename" masterpath = "/ home / name / dir"] мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора [include file =" filename "masterpath =" / home / name / dir "] еще больше мусорамусор мусор мусорвозраст мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора мусора

Моя цель, после запуска дампа sql phpMyAdmin, конечно :), чтобы удалить весь мусор, окружающийоператоры [include file].

Должен быть способ сделать это с одной или двумя строками SQL, но опять же, я являюсь мирянином MySQL.Может ли кто-нибудь помочь мне?Удаление всех экземпляров кода «вручную» / «вручную» не может быть и речи ... 100 сообщений или около того, возможно ... но НЕ 10 000 сообщений ...

Спасибо

1 Ответ

0 голосов
/ 08 декабря 2011

Я бы посоветовал вам сделать дамп SQL, как вы предлагаете, а затем применить поиск и замену к вашему файлу SQL, используя шаблон регулярного выражения. Если у вас есть доступ к утилите " sed ", вы можете применить следующее выражение для обновления операторов SQL:

sed -i -r 's/.*(\[.*\]).*(\[.*\]).*/\1\2/' /path/to/sql_dump_file

Обратите внимание, что флаг "-i" делает это редактирование встроенным, то есть исходный файл изменяется. Сначала убедитесь, что у вас есть резервная копия дампа базы данных.

Вам нужно будет ограничить это регулярное выражение только для запуска соответствующих операторов SQL INSERT. Я бы предложил скопировать эту часть из файла дампа SQL в новый файл, чтобы применить эту операцию.

Флаг "-r" позволит использовать расширенное регулярное выражение, которое позволяет нам группировать сопоставления с образцом. Следующая строка указывает на совпадение только содержимого скобок и отбрасывает остальные данные.

Больше информации о sed здесь: http://unixhelp.ed.ac.uk/CGI/man-cgi?sed

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...