DB(MySQL)にある巨大なテーブルをローカルに保存したいという質問を受けた。
保存自体は、phpMyAdminにあるエクスポートで可能なのだが、
ダウンロードした後、落としたファイルのレコード数と、テーブル上のレコード数を確認するように。
テーブルへの書き込みを止めてこれを行っても、ファイル<テーブル上となることがあるのだ。
テーブルへの書き込みは止めているのでそれ以上レコードは増えないのだが、ファイルとテーブルのレコード数に差があり、調べてみると、終端のレコードが欠損している。
ダウンロード回線の問題で、ファイルが破損している可能性もあるが、そうではない。
実は、phpMyAdminのエクスポートには、ダンプ行を指定する箇所がある。
これが、その時点でのレコード数と一致していないことがあるのだ。
上では651001行とあるが、この時点でのレコード数は、それよりも多い。
つまり、この設定のままエクスポートすれば、後ろのレコードが抜けてしまう。
意図的に「Dump all rows」にチェックを入れて、実行する必要がある。
最終レコードの比較を、ファイルとテーブルで行うワケだが、ファイルがGBを超えるような巨大ファイルだと、ファイルを開けないことがあるので、終端の一部のみを開けるようなエディターが必要になる。