我的供应商安装到我的网站Drupal CMS。现在我需要从旧网站复制所有数据。我在旧数据库中没有前缀表,但在新数据库中,所有表都有dp_[table_name]
前缀。如何更改我的MySQL数据库中所有表的前缀?
回答
zerkms解决方案没有为我工作。我必须指定information_schema
数据库才能查询Tables
表。
SELECT
CONCAT('RENAME TABLE ', GROUP_CONCAT('`', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`')) AS q
FROM
`information_schema`.`Tables` WHERE TABLE_SCHEMA='test';
编辑:
优化查询到的来电RENAME TABLE一次。我走进的一个事实是,连接的输出被截断了341个字符。这可以解决(如果允许您的服务器),由MySQL变量group_concat_max_len
设定为更高的值:
SET group_concat_max_len = 3072; -- UTF8 assumes each character will take 3 bytes, so 3072/3 = 1024 characters.
编写一个将为每个表运行RENAME TABLE的脚本。
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM
`TABLES` WHERE `TABLE_SCHEMA` = "test";
其中“测试”后,这个预期的数据库名
你能长时间查询,如果你执行它;-)
你可以简单地转储数据库,打开转储,将增加前缀使用文本编辑器,将所有出现的“CREATE TABLE”替换为“CREATE TABLE dp_”并恢复数据库。这需要几分钟的时间。
直到数据库小于几千兆字节;-) – zerkms 2010-03-17 22:30:27
我是游戏。 :)对于大于GB的数据库,使用查询工具(例如SQL Workbench),选择表列表中的所有表格,将内容复制到电子表格的A列(在我的情况下为Calc),并将以下内容公式在列B:=“重命名表”A1&“to dp_”&A1 & ";“将公式从单元格B1粘贴到每个其他B列单元格,重命名脚本出现在列B! – 2010-03-17 23:05:40
正如我在我的答案中所述 - 重命名的一个恰当的方法是使用RENAME TABLE(+ information_shema来检索表名) – zerkms 2010-03-18 01:39:22
phpMyAdmin的允许你现在做到这一点。在“数据库”级别,选择“结构”选项卡以查看所有表格。点击“全选”(位于表格下方)。在'With selected'下拉列表中选择'Replace table prefix'。
- 1. Magento更改数据库表前缀
- 2. MySQL创建跨所有前缀数据库表的视图
- 3. 来自以前所有者的MS SQL数据库表前缀
- 4. 如何更改Orchard中的数据库表名(添加表前缀)?
- 5. 我是否需要更改默认的数据库前缀?
- 6. 如何截断我的MySQL数据库中的所有数据?
- 7. 如何在mysql中添加所有表的前缀
- 8. 如何将我的数据库中的所有表更改为UTF8字符集?
- 9. 如何更改在我的数据库中的所有表使用AUTO_INCREMENT = 1
- 10. PHP代码更新我的mysql数据库中的所有行
- 11. 如何更改Prestashop 1.7表前缀?
- 12. KSOAP2如何更改前缀
- 13. 如何删除InnoDB数据库中的MySQL表前缀与约束
- 14. 如何删除mysql数据库中每个表名的前缀名称
- 15. 如何在程序中动态更改当前mysql数据库?
- 16. 如何更改数据库中的所有字段latin1_swedish_ci到utf8_general_ci?
- 17. 如何更改CouchDB数据库中所有文档的结构?
- 18. 你如何在sql中更改数据库的所有者?
- 19. 如何列出mysql数据库中的所有表格
- 20. 如何锁定一个MySQL数据库中的所有表?
- 21. 当同一个数据库中的另一个表被更改时如何更改mysql数据库表?
- 22. 如何在sql中显示带有后缀/前缀的数据?
- 23. 改变mysql数据库中的所有数据
- 24. 更改数据库中所有对象的所有权
- 25. Makefile:如何更改var的前缀?
- 26. 将varchar更改为数据库中所有表列的nvarchar
- 27. 如何从给定的数据库中删除所有带有前缀“bkp”的表?
- 28. 在所有表中的MySQL数据库中插入数据
- 29. 根据有序列表中的更改修改数据库表
- 30. 如何更改或替换数据表中的所有列名
确实,这对我来说很有用,因为我使用Joomla在本地主机XAMPP上工作,并且我想更改为自动Joomla前缀。我按照你的步骤 - 我必须像你一样指定'information_schema'.'Tables'并设置SET group_concat_max_len = 10240;在我的情况下,因为有很多表。 +1 – MJoraid 2015-02-01 08:59:29
还有一点,您可以使用相同的命令跨数据库移动表(比如backup_db),如下所示:'SELECT CONCAT('RENAME TABLE',TABLE_NAME,'TO backup_db。',TABLE_NAME,';')FROM INFORMATION_SCHEMA。 TABLES WHERE table_schema ='testbot';' – sactiw 2016-06-10 11:32:18
伟大的关于'group_concat_max_len'变量的编辑!我还没有得到完整的句子,工作很好! – AlexGH 2018-02-26 16:38:28