Вы можете использовать SQL для генерации сценария SQL для передачи каждой таблицы в исходной базе данных в целевую базу данных.
Вы должны создать базу данных назначения перед запуском скрипта, сгенерированного из команды.
Вы можете использовать любой из этих двух сценариев (я первоначально предложил первый и кто-то «улучшил» мой ответ, чтобы использовать GROUP_CONCAT
. Выберите, но я предпочитаю оригинал):
SELECT CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name, '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
или
SELECT GROUP_CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name SEPARATOR '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
($ 1 и $ 2 - источник и цель соответственно)
Это сгенерирует команду SQL, которую вам нужно будет выполнить.
Обратите внимание, что GROUP_CONCAT
имеет ограничение длины по умолчанию, которое может быть превышено для баз данных с большим количеством таблиц. Вы можете изменить этот лимит, набрав SET SESSION group_concat_max_len = 100000000;
(или другое большое число).