9 июня 2010, 10:18

Сравнение таблиц в двух БД (и больше) Избранное

Когда дохера работы, начинаешь страдать такой ерундой :)
Раз в несколько месяцев приходится сравнивать БД, и каждый раз в ручную. Один даже раз софт сутки искал, но он ужасен, весь. Немного пострадав, минут 30, получился такой код:
  • собираем всё в масcив;
  • выводим всё красиво в табличках;
  • подключаем jQ и делаем удобную «обёрточку»;
  • ...
  • Profit
<?php
  $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 комментарий РСС

Дмитрий ака Tigra Gudmundsdottir
Большое спасибо!
Мне помогло для написания сравнения данных в идентичных таблицах 2х разных баз

Ваш комментарий

адрес не будет опубликован

ХТМЛ не работает


Ctrl + Enter