我正在尝试更改网站中所有表格的前缀。我以为我能做到这一点:
rename table 'wp_%' to 'wp_13_%'
但这似乎不起作用。我喜欢输入我可能做错的事情。
谢谢!
答案 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; |
+-----------------------------------------------------------------------+