巨大なファイルを分割して編集後に復元

データベースのdumpファイルの一部を編集しようとしたところデータが大きすぎてエディタで開けなかったので、分割して編集して結合するという方法をとったのでメモ。

(データベースのdumpだと1行に大量のデータが入っているので、特定のテーブルにデータが偏っているとかだと行ごとの分割だとうまく行かない場合もありそうです)

まずはファイルの行数から何行ずつのファイルにするか調べます。

$ wc -l db_dump.sql
    2907 db_dump.sql

2907行あるとのことなので1000行ずつ分割することにします。

split -l 1000 db_dump.sql db_dump.sql_

とすることでdb_dump.sql_aa / db_dump.sql_ab / db_dump.sql_acの3つのファイルに分割されるので必要な場所を編集したあと下記コマンドで結合します。

cat db_dump.sql_* > db_dump_merged.sql

ちなみに、編集せずに結合したものが同一になっているか確かめたところ問題なかったのでこの方法で大丈夫だと思います。

$ md5 db_dump.sql
MD5 (db_dump.sql) = fc4bc699efd4d48d04bf35a6dbb6aeac
$ md5 db_dump_merged.sql
MD5 (db_dump_merged.sql) = fc4bc699efd4d48d04bf35a6dbb6aeac