データベースを移行するときに、移行前と移行後のデータ項目の数が一致しているかどうか、データが一貫しているかどうかなど、必要な検証を行うのはまだ非常に便利です。このとき何をすればよいでしょうか。項目数を検証する場合、データが一貫しているかどうかを検証する場合はどうすればよいでしょうか。もちろん、重要なデータの場合は、すべてのデータにエラーが含まれていないと検証できません。面倒なことになりますが、2 つのテーブルは同じサーバー上に存在しなくなりました。このときどうすればよいでしょうか? 方法はあります:
- A、B、C などの重要なフィールドをテーブルからいくつか選択し、これらのフィールドを比較ルーラーとして使用します。
- 各データのこれら 3 つのフィールドを元のテーブルからファイル f1 にエクスポートします。
- 各データのこれら 3 つのフィールドを宛先テーブルからファイル f2 に転送します。
- ファイル f1 と f2 の各データを比較して、それらが同じかどうかを確認します。
- 結論を出す
上記の方法は同時に考えられたもので悪くはありませんが、改善の余地があると思います:
- まず第一に、メインフィールド以外ではすべてのフィールドが異なって表示されるわけではありません。
- 全体的な効率は比較的低いです
私の考えは次のとおりです:
- テーブル内のデータを n 個ごとに結合します (直接接続します。n の値は各データのサイズによって異なります)。
- これらのn個のデータのmd5値を計算し、すべてのデータ値が取得されるまでファイルf1に追加します。
- ファイル f2 に記録されている宛先テーブルについても同様です。
- ファイル f1 と f2 の md5 値を比較し、一致していれば成功です。
- 矛盾している場合は、各 md5 値を上から下まで比較し、m 番目の不一致値を見つけます。
- 一貫性のないデータは m*(n-1)+1 ~ m*n の間にあると結論付けられ、位置決めを再度選択できます。
2番目の方法の利点は、出力ファイルが特定の範囲内に縮小されるため、比較が容易になることですが、1番目の方法のように、キーフィールドを通じて異なるデータの場所を直接見つけることができないという欠点もあります。
以下は 2 番目のメソッドの効果合計の具体的なコード実装です:
リーリー
以上、データテーブル移行のデータ整合性検証について内容も含めて紹介しましたが、PHPチュートリアルに興味のある方の参考になれば幸いです。