Назад | Перейти на главную страницу

Недействительность адресов электронной почты из дампа sql перед импортом

Синопсис

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

Источник

Замечание: мое выражение намеренно совпадает с ['] как часть синтаксиса запроса.

Пока у меня есть следующее использование grep который должен был проверить мое выражение лица.

$ cat site_backup.sql | egrep -io '\w+([._-]\w*)@\w+([._-]\w*)\.\w{2,4}'

Это печатает адреса электронной почты, но, конечно, мне нужно заменить использование sed:

$ sed -r -e "s/'(\w+)([._-]\w*)@(\w+)([._-]\w*)(\.\w{2,4})'/\1\2@invalid.\3\4\5/g" -i site_backup.sql

Прекрасно работает на небольшом проценте адресов электронной почты; Я заметил закономерность в том, что не было заменено 'word@word.ex.t'

Вывод

После добавления для этого другого выражения это не повлияет. Я до сих пор не изучал awk который, как я знаю, очень мощный, поэтому я не игнорирую его, я надеюсь, что кто-то может помочь.

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

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

UPDATE table_name SET email_field_name = REPLACE(email_field_name, '@', '@invalid.');

Я нашел хорошее решение по stackoverflow: https://stackoverflow.com/a/18355644/1690631

Благодаря анубхава.