MySQL:マルチデータベースからすべてのメールアドレスを取得しますか?

StackOverflow https://stackoverflow.com/questions/8398349

質問

2000以上のデータベースが含まれているMySQLサーバーにアクセスできます。すべてのデータベースをスキャンして、データベースのテーブルに保存されたすべてのメールアドレスを取得したいと思います。

それでは、すべてのデータベースからメールアドレスを抽出するソリューションを教えてください!?

私はすでにルート特権とphpmyAdminを持っています。

ありがとうございました

役に立ちましたか?

解決

すべてのテーブル(つまり、ルートとして)にアクセスできる場合は、すべてのテーブルをダンプして、このようなメールアドレスをグレップすることができます。

mysqldump -u root -p --all-database | egrep -i "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"

私が使用した正規表現はここから取られています:http://www. Regual-Expressions.info/email.html

編集:上記のコマンドは、列に関係なく電子メールアドレスを含む行全体を印刷します。専用の列がある場合は、少し変更して電子メールのみを印刷できます。

mysqldump -u root -p --all-database | perl -pe "s/,/\n/g; s/'//g;" | egrep -i "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b"

これにより、周囲の引用も削除されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top