MySQL: Kollation aller Tabellen mit PHP ändern
MySQL-Logo (Quelle: www.mysql.com)

MySQL: Kollation aller Tabellen mit PHP ändern

Mit folgendem PHP-Skript kann die Kollation aller Tabellen in einer MySQL-Datenbank geändert werden.

Das PHP-Skript durchläuft dabei zunächst die Tabellen und ändert deren Kollation. Eine bestehende Datenbankverbindung wird vorrausgesetzt. Danach wird die jeweilige Kollation der Tabellenfelder geändert. Die in den Tabellen enthaltenen Daten werden durch die Anwendung des Skriptes nicht umgewandelt.

Das PHP-Skript zur Änderung der Kollation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
$r1=mysql_list_tables('datenbankname');   
   
//Tabellen-Schleife
while($table=mysql_fetch_row($r1))
{
   $tablename=$table[0];
   
   $query="ALTER TABLE `".$tablename."` ";
   $query.="DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
   
   mysql_query($query);
   
   //Tabellenfelder-Schleife
   $r2=mysql_query("SHOW COLUMNS FROM `".$tablename."`");
   while($field=mysql_fetch_assoc($r2))
   {
      if
      (   
         preg_match("#varchar#",$field['Type']) || 
         in_array($field['Type'],array('text','mediumtext','tinytext'))
      )
      {
         $fieldname=$field['Field'];
         
         $query="ALTER TABLE `".$tablename."` CHANGE `".$fieldname."` `";
         $query.=$fieldname."` ".$field['Type']." ";
         $query.="CHARACTER SET utf8 COLLATE utf8_general_ci";
         
         mysql_query($query);
      }
   }
}
Mit einem Doppelklick kann der gesamte Code markiert werden.

Geschrieben von: Jens Richter