データベースのバックアップがいくつかあり、バックアップ内のデータを比較して、時間の経過とともにデータがどのように変化したかを確認する方法があるかどうかを調べています。比較したいフィールドにタイムスタンプはありませんが、行には一意の ID があります。バックアップは、mysqldump を使用して作成された .sql ファイルです。
これを行うプロセスはありますか?
データベースのバックアップがいくつかあり、バックアップ内のデータを比較して、時間の経過とともにデータがどのように変化したかを確認する方法があるかどうかを調べています。比較したいフィールドにタイムスタンプはありませんが、行には一意の ID があります。バックアップは、mysqldump を使用して作成された .sql ファイルです。
これを行うプロセスはありますか?
MySQLDiff ( http://www.mysqldiff.org/ ) と呼ばれるツールを含む、MySQL 用の多数の差分ツールがあります。このためのコマンド ライン インターフェイスもあり、次の場所にあります。
http://devzone.intellitree.com/projects/intellitree-cli-extension-to-mysqldiff/
これに似た視覚的な差分ツール (およびその他のソリューション) については、この以前の StackOverFlow の投稿を参照してください。
理論的には、バックアップを 2 番目のデータベースとしてインポートしてから、SQL サーバーに接続し、一意の ID でエントリを反復処理して比較する PHP スクリプトを作成できます。
コマンドラインで使用することもできますdiff
が、結果のデータセットはそれほど機能しない場合があります。
WinMergeやその他のマージ ツールなどのツールを使用して、バックアップの実際の差分を確認できます。これが成功するかどうかは、ファイルのサイズによって異なります。非常に大きなバックアップに対してこれを行うことはお勧めしません。
mysqldump を使用してバックアップを行う場合、バックアップ ファイルは標準のテキスト ファイルになります。その後、適切なテキスト ファイル比較ユーティリティ (つまり、UNIX システムでは diff) を使用して違いを確認できます。
これの良い点の 1 つは、テーブル スキーマがデータと共にダンプされることです。
もう 1 つの利点は、バックアップがバージョンやマシンに依存しないことです。実行中の MySQL のコピーに復元できます。
欠点は、ダンプのデータ部分が最大長の行として書き込まれるため、一部のテキスト エディターがそれを詰まらせることです。
乾杯、
-R