SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【linux】巨大なファイルから必要な部分だけ抜き出す

問題

MySQLの巨大なダンプファイルから、ごく一部を抜き出したい。

うまく途中だけ抽出したり、ファイルを分割する方法は?

答え

ファイルの大きさによって対応を変えるとよい。

ファイルサイズがほどほどの場合

巨大すぎなければ、以下で分割できる。

csplit ダンプファイル.dump '/DROP TABLE IF EXISTS/' {*}

ファイルが大きい場合

行数を調べて分割する場合は、「– Current Database:」のようなダンプファイルによくある表現で検索して、

egrep -n '^-- Current Database:' mysql_2014-11-18.dmp
……
401237:-- Current Database: `aaaa`
414577:-- Current Database: `bbbb`
425362:-- Current Database: `cccc`
425370:-- Current Database: `mysql`
426029:-- Current Database: `qqqq`
439249:-- Current Database: `rrrr`
……

行数指定で切り出す。

sed -n '425368,426027p' mysql_2014-11-18.dmp > databasename.dump

sedで1行目から指定行数までを切り出したいときは、開始は1を指定する(0ではなくて)。

関連するメモ

コメント