Alle table-names ändern in GROSS

Irgendwelche Probleme mit XAMPP für Linux? Dann ist hier genau der richtige Ort um nachzufragen.

Alle table-names ändern in GROSS

Postby Nagi » 09. November 2008 11:33

Hallo Apachegemeinde,

ich habe nach meinem Umzug von M$ nach Ubuntu das Problem, dass alle Tabellennamen in meinen MySQL DB kleine geschrieben sind. Das Programm das ich verwende braucht jedoch zwingend großgeschriebene Tabellennamen.

Gibt es eine SQL Anweisung, mit der ich alle table-names von Klein- auf Großschreibung ändern kann?

Ich google mir seit zwei Tagen einen Wolf, aber komme nicht weiter. Mittels ALTER RENAME 'tb_name1' TO 'TB_NAME1' würde es gehen, aber ich habe in der Tabelle so viele Einträge, dass es manuell zu aufwendig wäre.

Hat hier jemand eine Lösung für mich?

Gruß
Nagi
Nagi
 
Posts: 3
Joined: 09. November 2008 11:24

Postby Nobbie » 09. November 2008 15:21

Schreib ein kleines PHP Script, welches über alle Tabellennamen dackelt ("SHOW TABLES") und dann mit den Ergebnissen jeweils den ALTER RENAME durchführt.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Nobbie » 09. November 2008 15:45

Oder, versuche mal in der Datei my.cnf in die Section [mysqld] den Wert von lower_case_table_names auf 1 zu setzen (und starte MySQL neu):

Code: Select all
...
[mysqld]
lower_case_table_names=1
...


Die Bedeutung kannst Du hier nachlesen: http://dev.mysql.com/doc/refman/5.1/de/ ... ivity.html
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Nagi » 09. November 2008 16:33

Hallo,

danke für den Hinweis.
mit lower-case-table-names=1 bewirkst du nur, dass NEUE Tabellennamen entsprechend angelegt werden. Wirkt sich leider nicht auf bestehende Tabellen aus.

Wie könnte eine PHP skript aussehen?
Nagi
 
Posts: 3
Joined: 09. November 2008 11:24

Postby Nobbie » 09. November 2008 16:54

>Wirkt sich leider nicht auf bestehende Tabellen aus.

Das stimmt nicht. Laut Doku bewirkt diese Einstellung, dass (auch bei vorhandenen Tabellen) der Tabellenname in SQL-Statements nicht case-sensitiv ist.

Sonst probiere mal die anderen Einstellungen aus, ob irgendeine hilft.

Wie ansonsten ein Script aussieht, habe ich doch quasi schon geschrieben - Du mußt nur ein bißchen PHP Code herumschreiben, eine while-Schleife über die Treffer und dort die ALTER-Anweisung ausführen.
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Nobbie » 09. November 2008 16:57

Ohne Test (mußt Du bei Fehlern selbst korrigieren, vor allem mußt Du oben die richtigen Zugangsdaten einsetzen):

Code: Select all
<?php

   $server   = 'localhost';
   $user     = 'root';
   $password = 'xxxxxxxx';
   $database = 'mydata';


   if (!mysql_connect($server, $user, $password))
      die(mysql_error());

   if (!mysql_select_db($database))
      die(mysql_error());

   if (!$res = mysql_query("SHOW TABLES"))
      die(mysql_error());

   while ($row = mysql_fetch_row($res)) {
      $tablename = $row[0];
      $uppername = strtoupper($tablename);

      if (!mysql_query("ALTER TABLE `$tablename` RENAME TO `$uppername`))
         echo mysql_error();
      else
         echo "'$tablename' erfolgreich umbenannt in '$uppername'<br />\n";
   }

   mysql_close();

?>
Nobbie
 
Posts: 13170
Joined: 09. March 2008 13:04

Postby Nagi » 09. November 2008 17:40

Hallo Nobbie,

man, klasse - VIELEN DANK!!! - etwas angepasst ging es aus Anhieb.
Code: Select all
<?php

   $server   = 'localhost';
   $user     = 'root';
   $password = '';
   $database = '';


   if (!mysql_connect($server, $user, $password))
      die(mysql_error());

   if (!mysql_select_db($database))
      die(mysql_error());

   if (!$res = mysql_query("SHOW TABLES"))
      die(mysql_error());

   while ($row = mysql_fetch_row($res))
      {
      $tablename = $row[0];
      $uppername = strtoupper($tablename);

      if (!mysql_query("ALTER TABLE `$tablename` RENAME TO `$uppername`"))
         echo mysql_error();
         echo "'$tablename' erfolgreich umbenannt in '$uppername'<br />\n";
      }

   mysql_close();

?>

Vielen Dank.

Gruß
Nagi
Nagi
 
Posts: 3
Joined: 09. November 2008 11:24


Return to XAMPP für Linux

Who is online

Users browsing this forum: No registered users and 15 guests