我想将生产数据导入到开发环境中,以便能够以几乎准确的方式进行testing。 当然,我需要使电子邮件地址无效,因为我不想让电子邮件到达最终用户。
只是一个侧面说明 – 我的expression式故意匹配[']作为查询语法的一部分
到目前为止,我有以下使用grep这是testing我的expression。
$ cat site_backup.sql | egrep -io '\w+([._-]\w*)@\w+([._-]\w*)\.\w{2,4}'
这是打印的电子邮件地址,但我当然需要使用sedreplace:
$ sed -r -e "s/'(\w+)([._-]\w*)@(\w+)([._-]\w*)(\.\w{2,4})'/\1\2@invalid.\3\4\5/g" -i site_backup.sql
在一小部分电子邮件地址上工作正常; 我注意到了一个没有被replace的模式'[email protected]'
在为此添加另一个expression式之后,它没有任何影响。 我还没有研究过awk ,我知道这个awk非常强大,所以我并不是无知,我希望有人能帮上忙。
我的目标很简单,我使用mysqldump导出生产数据库,然后希望在将数据导入到开发环境之前,replace所有的电子邮件地址(或尽可能多的)。 我可能从一个尴尬的angular度做这个?
将您的转储导入到一个新的数据库,并使用这样的查询:
UPDATE table_name SET email_field_name = REPLACE(email_field_name, '@', '@invalid.');
我发现了一个很好的解决scheme,在stackoverflow: https : //stackoverflow.com/a/18355644/1690631
感谢anubhava 。