1

2000 以上のデータベースを含む MYSQL Server にアクセスできます。すべてのデータベースをスキャンして、データベースのテーブルに保存されているすべての電子メール アドレスを取得したいと考えています。

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

私はすでに root 権限と phpmyadmin を持っています。

ありがとうございました

4

1 に答える 1

5

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

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

私が使用した正規表現は、ここから取得されます: http://www.regular-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"

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

于 2011-12-06T10:36:37.980 に答える