9 июня 2010, 10:18
Сравнение таблиц в двух БД (и больше)
Когда дохера работы, начинаешь страдать такой ерундой :)Раз в несколько месяцев приходится сравнивать БД, и каждый раз в ручную. Один даже раз софт сутки искал, но он ужасен, весь. Немного пострадав, минут 30, получился такой код:
- собираем всё в масcив;
- выводим всё красиво в табличках;
- подключаем jQ и делаем удобную «обёрточку»;
- ...
- Profit
$user = "root"; $userp = ""; mysql_connect("localhost", $user, $userp) or die(mysql_error()); $table2compare = array("test1", "test2"); $comparedtables = array(); $i = 0; foreach ($table2compare as $tablename){ $comparedtables["title"][$i] = $tablename; $db = mysql_query("SHOW TABLES IN $tablename"); while($dbt = mysql_fetch_array( $db )){ $table = mysql_query("SHOW COLUMNS FROM $dbt[0] FROM $tablename "); while($tbf = mysql_fetch_array( $table )) $comparedtables["tables"][$dbt[0]][$i][] = $tbf; } $i++; } echo "<table><tr>"; for ($j = 0; $j < $i; $j++) echo "<td>".$comparedtables["title"][$j]."</td>"; echo "</tr>"; foreach ($comparedtables["tables"] as $table => $fields) { echo "<tr>"; for ($j = 0; $j < $i; $j++) { if ($j > 0) $eq = $fields[$j] == $fields[0]; else $eq = true; echo "<td valign='top' ".(!$eq ? "style='background: #fcc;'" : "").">"; if (empty($fields[$j])) continue; echo "<span>$table</span><br><table rules=all frame=box cellpadding='2'> <tr> <td>Field</td> <td>Type</td> <td>Null</td> <td>Key</td> <td>Default</td> <td>Extra</td> </tr>"; foreach ($fields[$j] as $field) echo "<tr> <td>$field[0]</td> <td>$field[1]</td> <td>$field[2]</td> <td>$field[3]</td> <td>$field[4]</td> <td>$field[5]</td> </tr>"; echo "</table></td>"; } echo "</tr>"; } echo "</table>"; mysql_close(); <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(function(){ $("table table").hide(); $("table span").click(function(){ $(this).next().next().toggle(); }).css({"cursor":"pointer"}); }); </script>

1 комментарий РСС
Мне помогло для написания сравнения данных в идентичных таблицах 2х разных баз
Ваш комментарий