大きなファイルから必要な情報を抜き出す

splitって以外と便利なんだなと思った記事です。

そもそも何をしたかったのか

test用のdumpデータが欲しいけど、ひとつのテーブルのinsert文があればよい。なんだけど、受け取ったdumpファイルが全DB, 全talbeのinsert文を含み、かつ巨大です。

mysqladminでdumpすればよいのですが、その権限がない場合はどうしましょうという話です。

で、split

あまり馴染む機会がなかったんですがsplitが便利でした。

% split target.dump.sql

そうするとこんな感じでファイルが生成されます

% ls -al
-rw-r--r-- 1 okamura hogehoge 3644029287 10月 18 17:29 target.dump.sql
-rw-r--r-- 1 okamura hogehoge 46109604 10月 18 17:31 xaa
-rw-r--r-- 1 okamura hogehoge 1044908804 10月 18 17:31 xab
-rw-r--r-- 1 okamura hogehoge 1044892824 10月 18 17:32 xac
-rw-r--r-- 1 okamura hogehoge 1044892686 10月 18 17:33 xad
-rw-r--r-- 1 okamura hogehoge 463225369 10月 18 17:34 xae

この状態だとviで開いても重くないです。

分割しないと重くなるのはviのメモリが足りなくてスワップしてるのかしら。
もっといい方法あるかもしれないですが、とりあえず少ない手間で仕事が進められてうれしい。