Как я могу изменить префиксы во всех таблицах в моей MySQL DB?
мой провайдер установлен на моем сайте Drupal CMS. Теперь мне нужно скопировать все мои данные со старого сайта. У меня есть таблицы без префиксов в моей старой БД, но в новой БД все таблицы имеют dp_[table_name]
префикс.
4 ответов
решение 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';
Edit:
оптимизирован запрос только для вызова таблицы переименования один раз. Я столкнулся с тем фактом, что объединенный вывод был усечен на 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";
где ожидается "test" имя базы данных
после этого вы можете длинный запрос, который добавит префиксы, если вы его выполните; -)
PhpMyAdmin позволяет сделать это сейчас. На уровне "база данных" выберите вкладку структура, чтобы просмотреть все таблицы. Нажмите "Проверить все" (под списком таблицы). В раскрывающемся списке "с выбранным" выберите: "заменить префикс таблицы".
вы можете просто сбросить базу данных, открыть дамп с помощью текстового редактора, заменить все вхождения " создать таблицу "на" создать таблицу dp_ " и восстановить базу данных. Это займет пару минут.