2016-07-25 94 views
-1

我試圖用數據庫中的所有表名替換所有空格('')中的下劃線,使用PhpMyAdmin。用數據庫中所有表名中的下劃線替換空格

例如: 表1 - > TABLE_1

我想知道,這是可能的。我知道可以爲列做這件事,但我想知道是否有人可以給我寫一些表格。我不經常使用PhpMyAdmin,但是我在這種情況下安裝了它,因爲它很容易工作。

回答

0

你可以運行這樣的查詢生成將執行重命名的SQL:

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

請記住用your_schema_name代替您的數據庫被調用。

要在phpMyAdmin中運行查詢,您可以單擊窗口頂部的SQL選項卡,然後將SQL粘貼到該框中。上述查詢的結果將是基於現有表名稱生成的SQL。只需將此生成的SQL複製迴文本框並再次運行即可執行重命名。

+0

我執行它,它回來了CONCAT和選項。我從這裏做什麼?我無法將其複製回SQL –

+1

您應該能夠複製CONCAT行的內容,再次單擊頂部的SQL,粘貼並運行它。然後表名將被更新。 –

2

我不知道,如果你能在存儲過程中做到這一點,但它是很容易有一個查詢爲你生成一個腳本:

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

你也可以用一個命令重命名所有表:

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 '% %'; 

樣品

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]>