使用通配符重命名表前缀

时间:2011-01-15 14:03:51

标签: sql mysql wordpress

我正在尝试更改网站中所有表格的前缀。我以为我能做到这一点:

rename table 'wp_%' to 'wp_13_%'

但这似乎不起作用。我喜欢输入我可能做错的事情。

谢谢!

4 个答案:

答案 0 :(得分:5)

由于mysql在重命名表中没有使用像%这样的通配符,为什么不导出数据库呢?在你最喜欢的文本编辑器wp_中进行全局搜索并用wp_13替换_?

然后你可以重新导入它。

应该这样做。

答案 1 :(得分:1)

我知道你正在使用MySQL,虽然我有类似为SQL Server编写的东西(使用T-SQL)。这就像使用推土机打开一扇门,但它有效。您可以将它用作MySQL查询的基础...绝对不是一个即时可用的答案,但如果您愿意,可以根据存储过程的逻辑做出决定。

DECLARE @FrontWord nvarchar(20)
DECLARE @NewFrontWord nvarchar(20)

SET @FrontWord = 'wp_'
SET @NewFrontWord = 'wp_13_'

DECLARE MY_CURSOR Cursor
FOR (
    SELECT TABLE_NAME
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_TYPE = 'BASE TABLE'
    AND TABLE_NAME LIKE @FrontWord + '%'
)

Open MY_CURSOR

DECLARE @tablename nvarchar(20)
DECLARE @lastpart nvarchar(20)
DECLARE @newtablename nvarchar(20)

Fetch NEXT FROM MY_Cursor INTO @tablename

    While (@@FETCH_STATUS <> -1)
    BEGIN
        IF (@@FETCH_STATUS <> -2)
        SET @lastpart = RIGHT(@tablename, LEN(@tablename) - LEN(@FrontWord))
        SET @newtablename = @NewFrontWord + @lastpart;
        PRINT @newtablename

        EXEC sp_rename @tablename, @newtablename

FETCH NEXT FROM MY_CURSOR INTO @tablename
END 

CLOSE MY_CURSOR
DEALLOCATE MY_CURSOR
GO

答案 2 :(得分:1)

mysql重命名语法不支持您使用的%之类的通配符。 您仍然可以在一个命令中重命名几个表。

e.g。如果你有表wp_A,wp_B你可以重命名为wp_13_A,wp_13_B

RENAME TABLE 'wp_A' TO 'wp_13_A', 'wp_B' TO 'wp_13_B'

答案 3 :(得分:0)

您可以使用sql生成必要的DDL代码。不漂亮,但功能强大:)

只需复制并粘贴结果即可。

set session sql_mode='PIPES_AS_CONCAT';

select 'alter table ' 
     || table_name 
     || ' rename to wp_13_' 
     || substr(table_name, 4) 
     || ';' as ddl
  from information_schema.tables 
 where table_schema = 'BLOG';


+-----------------------------------------------------------------------+
| ddl                                                                   |
+-----------------------------------------------------------------------+
| alter table wp_commentmeta rename to wp_13_commentmeta;               |
| alter table wp_comments rename to wp_13_comments;                     |
| alter table wp_links rename to wp_13_links;                           |
| alter table wp_options rename to wp_13_options;                       |
| alter table wp_postmeta rename to wp_13_postmeta;                     |
| alter table wp_posts rename to wp_13_posts;                           |
| alter table wp_term_relationships rename to wp_13_term_relationships; |
| alter table wp_term_taxonomy rename to wp_13_term_taxonomy;           |
| alter table wp_terms rename to wp_13_terms;                           |
| alter table wp_usermeta rename to wp_13_usermeta;                     |
| alter table wp_users rename to wp_13_users;                           |
+-----------------------------------------------------------------------+