服务器数据库迁移到新的数据库中:
场景1、修改多个数据库的前缀以及表前缀
1、创建数据库
#根据规则创建新的数据库
SELECT
CONCAT(
'CREATE DATABASE ',
'new',
substring(SCHEMA_NAME, CHAR_LENGTH('old_')),
' DEFAULT CHARSET ',DEFAULT_CHARACTER_SET_NAME,
' collate ',DEFAULT_COLLATION_NAME,
';'
)
FROM
information_schema.SCHEMATA
WHERE
SCHEMA_NAME LIKE 'old_%';
#根据老的数据库创建新的数据库,保留字符集和规则,生成的语句形如:
CREATE DATABASE new_product DEFAULT CHARSET utf8 collate utf8_general_ci;
#执行sql语句生成新的数据库名称
2、转移数据库表
运用数据传输工具直接传输数据
3、根据规则生成修改表的sql语句 (针对单个数据库修改表)
SELECT
CONCAT(
'ALTER TABLE ',
TABLE_SCHEMA,
'.',
table_name,
' RENAME TO ',
TABLE_SCHEMA,
'.',
'new',
substring(table_name, CHAR_LENGTH('ueb_')),
';'
) as '修改表前缀sql'
FROM
information_schema.TABLES
WHERE
TABLE_SCHEMA = 'new_product' AND table_name LIKE 'old_%';
#执行生成的sql,如:
ALTER TABLE new_product.old_test RENAME TO new_product.new_test;