grep を使用して mysql ダンプからテーブルを抽出するこのガイドに従っていたので、1 つのテーブルを覗くために 50GB のデータすべてを復元する必要はありません。テーブルをプルする 2 つの主なコマンドは次のとおりです。
grep -n "Table structure" [MySQL_dump_filename].sql
テーブル定義の行番号を取得し、次に
sed -n '[starting_line_number],[ending_line_number] p' [MySQL_dump_filename].sql > [table_output_filename].sql
ただし、.sql ダンプを逆の順序で検索したいと思います。必要なのはファイルの末尾にあり、最初の 48 GB のデータを grep するのにかなりの時間がかかるからです。私はOS Xを使用しており、tacをインストールしています(ここに記載されているようにbrewを介して)。しかし、これを達成するためにコマンドをセットアップし、sed が必要な行を取得した後にコマンドを終了させることは可能ですか? そうでない場合は、最初から tac をまったく実行せずに grep した方がよいので、しばらくお待ちください。または、ファイルが別の端末に取り込まれているのを確認したら、ctrl-c を押します。
実行例:
$ tac dump.sql | grep -n "Table structure"
...
751:-- Table structure for table `answer`
779:-- Table structure for table `template`
806:-- Table structure for table `resource`
...
しかし、もちろんこれらは行番号が逆なので、「テンプレート」テーブルが必要な場合は sed -n '752,779 p' を実行する必要がありますが、ファイルの最後からそうしないと、間違った行番号 (sedファイルの先頭からカウントされます)。