ホームページ >バックエンド開発 >PHPチュートリアル >データテーブル移行データ整合性検証、移行データ整合性検証_PHPチュートリアル
データベースを移行する際に、移行前後のデータ項目数が一致しているか、データが正常に保存されているかなど、必要な検証を行うのに非常に役立ちます。検証エントリの数は簡単です。もちろん、重要なデータについては、すべてのエントリにエラーが含まれていない必要があります。省略すると面倒です。テーブルは同じサーバー上になくなります。このときどうすればよいでしょうか? 方法はあります:
上記の方法も同時に考えたもので、悪くはないのですが、改善の余地があると思います:
私の考えは次のとおりです:
2番目の方法の利点は、出力ファイルが特定の範囲内に縮小されるため、比較が容易になることですが、1番目の方法のように、キーフィールドを通じて異なるデータの場所を直接見つけることができないという欠点もあります。
以下は 2 番目のメソッドの効果合計の具体的なコード実装です:
'ローカルホスト'、
'ポート' => '3306',
'ユーザー' => 'ルート'、
'pswd' => '123456',
'charset' => 'utf8',
'テーブル' => 配列(
「lagou.pos」、
'lagou.pos_innodb',
)、
);
//フォーマットを検証する
if(!$link = mysql_connect($dbinfos['host'].":".$dbinfos['port'],$dbinfos['user'], $dbinfos['pswd']))
{
die("[{$host}@{$port}] への接続に失敗しました!!");
}
if(!mysql_query("セット名 {$dbinfos['charset']}"))
{
die("文字セットエラーの設定: ".mysql_error());
}
foreach ($dbinfos['tables'] として $table)
{
if($is_count)
{
$sql = "{$table} の数値として count(*) を選択します";
$ret = mysql_query($sql);
if(!$ret)
{
die("エラー: ".mysql_error());
}
$ret = mysql_fetch_array($ret, MYSQL_ASSOC);
echo "{$table} : {$ret['nums']}n";
}
if($is_md5)
{
$path = $is_md5.DIRECTORY_SEPARATOR.$table;
$sql = "{$table} から * を選択";
$ret = mysql_query($sql);
$フラグ = 0;
$フィールド = '';
while ($_ret = mysql_fetch_array($ret, MYSQL_NUM)) {
$フラグ++;
その間($_ret)
{
$fields .= array_pop($_ret);
}
if($flag % $conbine_num == 0)
{
file_put_contents($path, md5($fields)."n", FILE_APPEND);
$フィールド = '';
}
}
if($flag % $conbine_num != 0 && $flag > 0)
{
file_put_contents($path, md5($fields)."n", FILE_APPEND);
}
echo "ファイル情報に保存: ".realpath($path)."n";
}
}