将数据库中所有 table 名称中的 space 替换为下划线

Replace space with underscore in all table names in database

我正在尝试使用 PhpMyAdmin 将数据库中所有 table 名称中的所有 space (' ') 替换为下划线。

例如: Table 1 --> Table_1

我想知道这是否可能。我知道可以为专栏执行此操作,但我想知道是否有人可以为 tables 写一些东西给我。我不经常使用 PhpMyAdmin,但在这种情况下我安装了它,因为它很容易工作。

我不确定您是否可以在存储过程中执行此操作,但是让查询为您生成脚本很容易:

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

您可以 运行 这样的查询来生成将执行重命名的 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 中查询您可以单击window 顶部的SQL 选项卡,然后将SQL 粘贴到框中。上述查询的结果将 SQL 根据现有 table 名称生成。只需将结果 SQL 复制回文本框,然后再次 运行 执行重命名。

您也可以用一条命令重命名所有 table:

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