【问题标题】:In MySQL, how do I batch rename tables within a database?在 MySQL 中,如何批量重命名数据库中的表?
【发布时间】:2012-04-08 21:42:06
【问题描述】:

所以基本上我在 MySQL 中有一个 joomla 数据库,其中有一堆前缀为“jmla_”的表。我想通过用“jos_”前缀替换“jmla_”前缀来重命名所有这些表。关于如何使用简单的 SQL 脚本或 SQL 查询来执行此操作的任何想法?

【问题讨论】:

    标签: mysql joomla1.5


    【解决方案1】:
    SELECT  concat ('rename table ',table_name,' to ',table_name,'_old;')
    FROM information_schema.tables
    WHERE table_name like 'webform%'
      and table_schema='weiss_db_new'
    

    会起作用的。

    【讨论】:

      【解决方案2】:

      运行此语句:

      SELECT 'rename table '||table_name||' to '||'jos'||substr(table_name,5)||';'
      FROM information_schema.tables
      WHERE table_name like 'jmla%'
      

      这将创建一个将重命名所有表的脚本。只需将输出复制并粘贴到您的 SQL 客户端即可。

      (您需要将|| 更改为 MySQL 的非标准连接运算符,以防您不是在 ANSI 模式下运行它)

      【讨论】:

      • 确保您还过滤了要应用此功能的数据库,否则这将在所有数据库中产生 RENAME 查询,包括您可能拥有的其他 Joomla 安装:AND TABLE_SCHEMA = 'your_joomla_db'
      【解决方案3】:
      RENAME TABLE jmla_whatever to jos_whatever;
      

      您必须编写一个脚本来覆盖所有表格 - 您可以使用 show tables 的输出填充您的脚本。详情请见http://dev.mysql.com/doc/refman/5.0/en/rename-table.html

      【讨论】:

        【解决方案4】:
        1. 使用 phpmyadmin 导出到 .sql 文件
        2. 使用任何带有“查找和替换”功能的文本编辑器(我更喜欢 vim,在处理大文件时表现出色)来打开文件
        3. 执行“查找和替换”,将您的实际前缀放入查找框中,并在替换框中更新
        4. 使用 phpmyadmin 导入文件。

        请记住在 phpmyadmin 导入之前删除旧数据库。这可以在导出期间检查合适的选项来完成。

        【讨论】:

        • 如果行的名称之一包含“jmla_”会怎样?或者更糟糕的是,如果数据在某个地方有这样的数据?
        • 1.我在实践中从未见过这种情况 2。我的解决方案又做了一件好事,将点更改为不存在的数据库。
        • 关键是,当有更好的解决方案时,不值得冒险进行简单的查找和替换。该解决方案可能会导致将来难以调试的问题。
        • 我只知道这个解决方案。如果存在更好的(快速和简单),你是对的。谢谢。
        【解决方案5】:

        您是否考虑过为 Joomla 使用 Akeeba 管理工具组件!然后使用数据库前缀编辑器更改表前缀,效果非常好。 Akeeba 管理工具可用于保护您的 Joomla!安装

        Akeeba可以获取here

        【讨论】:

          猜你喜欢
          • 2011-07-30
          • 1970-01-01
          • 2010-10-15
          • 1970-01-01
          • 2016-07-06
          • 1970-01-01
          • 1970-01-01
          • 2017-06-22
          • 1970-01-01
          相关资源
          最近更新 更多