Sky*_*Fox 24 mysql database prefix
我的提供商已安装到我的网站Drupal CMS.现在我需要从旧网站复制我的所有数据.我的旧数据库中有没有前缀的表,但在新数据库中,所有表都有dp_[table_name]前缀.
Koe*_*en. 28
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';
Run Code Online (Sandbox Code Playgroud)
编辑:
优化查询只调用一次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.
Run Code Online (Sandbox Code Playgroud)
zer*_*kms 21
编写一个脚本,为每个表运行RENAME TABLE.
SELECT
GROUP_CONCAT('RENAME TABLE `', TABLE_SCHEMA, '`.`', TABLE_NAME, '` TO `', TABLE_SCHEMA, '`.`prefix_', TABLE_NAME, '`;' SEPARATOR ' ')
FROM
`TABLES` WHERE `TABLE_SCHEMA` = "test";
Run Code Online (Sandbox Code Playgroud)
其中"test"是预期的数据库名称
在此之后你可以长时间查询,如果你执行它将添加前缀;-)
小智 15
PhpMyAdmin允许您现在执行此操作.在"数据库"级别,选择"结构"选项卡以查看所有表.点击"全部选中"(在表格列表下方).在'With selected'下拉列表中选择:'Replace table prefix'.
小智 6
Just modded this slightly to account for situations where the prefix is also in the table name.
SET @database = "database_name";
SET @old_prefix = "old_prefix_";
SET @new_prefix = "new_prefix_";
SELECT
CONCAT(
"RENAME TABLE ",
TABLE_NAME,
" TO ",
CONCAT(@new_prefix, TRIM(LEADING @old_prefix FROM TABLE_NAME)),
';'
) AS "SQL" FROM information_schema.TABLES WHERE TABLE_SCHEMA = @database;
Run Code Online (Sandbox Code Playgroud)
您可以简单地转储数据库,使用文本编辑器打开转储,将所有出现的“CREATE TABLE”替换为“CREATE TABLE dp_”并恢复数据库。需要几分钟才能完成。
| 归档时间: |
|
| 查看次数: |
40197 次 |
| 最近记录: |