2016-07-25 10 views
-1

Ich versuche, alle Leerzeichen ('') mit einem Unterstrich in allen Tabellennamen in einer Datenbank mit PhpMyAdmin zu ersetzen.Ersetzen Sie Leerzeichen durch Unterstreichung in allen Tabellennamen in der Datenbank

Ex: Tabelle 1 -> Table_1

Ich frage mich, ob dies möglich ist. Ich weiß, dass das für Spalten möglich ist, aber ich frage mich, ob mir jemand etwas für Tische schreiben könnte. Ich benutze PhpMyAdmin nicht sehr oft, aber ich habe es in diesem Fall installiert, weil es einfach funktioniert.

Antwort

0

Sie eine Abfrage wie folgt ausführen könnte generieren die SQL, die eine Umbenennungsdurchführen wird:

SELECT CONCAT('RENAME TABLE ', table_name, ' TO ' , REPLACE(table_name, ' ', '_') , ';') 
FROM information_schema.tables 
WHERE table_schema = 'your_schema_name'; 

Denken Sie daran, your_schema_name zu ersetzen, was auch immer Ihre Datenbank aufgerufen.

Um die Abfrage in phpMyAdmin auszuführen, können Sie auf die Registerkarte SQL am oberen Rand des Fensters klicken und dann die SQL in das Feld einfügen. Das Ergebnis der obigen Abfrage wird SQL sein, das basierend auf den vorhandenen Tabellennamen generiert wird. Kopieren Sie das resultierende SQL einfach zurück in das Textfeld und führen Sie es erneut aus, um die Umbenennungen auszuführen.

+0

ich es ausgeführt und es kam mit einer CONCAT und Optionen zurück. Was mache ich von hier aus? Ich kann das nicht zurück in das SQL kopieren –

+1

Sie sollten in der Lage sein, den Inhalt der CONCAT-Zeile zu kopieren, klicken Sie erneut oben auf SQL, fügen Sie es ein und führen Sie es aus. Dann werden die Tabellennamen aktualisiert. –

2

Ich bin mir nicht sicher, ob Sie dies in einer gespeicherten Prozedur tun könnte, aber es ist leicht genug, um eine Abfrage zu haben, ein Skript generieren Sie:

SELECT CONCAT('RENAME TABLE `' 
    , table_name 
    , '` TO `' 
    , REPLACE(table_name, ' ', '_') 
    , '`;' 
    ) AS renameQuery 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA = 'mySchema' AND TABLE_NAME LIKE '% %' 
; 
0

Sie können auch alle Tabelle mit einem Befehl umbenannt:

SELECT 
    CONCAT('RENAME TABLE ' 
    ,GROUP_CONCAT(
     CONCAT('`',TABLE_NAME,'` TO ', REPLACE(TABLE_NAME,' ','_')) 
    SEPARATOR ', '),';') AS query 
FROM information_schema.Tables 
WHERE TABLE_SCHEMA = 'yourschema' 
AND TABLE_NAME LIKE '% %'; 

Probe

MariaDB [yourschema]> SELECT CONCAT('RENAME TABLE '  ,GROUP_CONCAT(  CONCAT('`',TABLE_NAME,'` TO ', REPLACE(TABLE_NAME,' ','_'))  SEPARATOR ', '),';') AS query FROM information_schema.Tables WHERE TABLE_SCHEMA = 'yourschema' AND TABLE_NAME LIKE '% %'; 
+--------------------------------------------------------------------------------------+ 
| query                    | 
+--------------------------------------------------------------------------------------+ 
| RENAME TABLE `esercizio 1` TO esercizio_1, `my_table 1` TO my_table_1, `t 1` TO t_1; | 
+--------------------------------------------------------------------------------------+ 
1 row in set (0.00 sec) 

MariaDB [yourschema]>