Есть инструкция:
CREATE TABLE <name> LIKE <othername>;
Но вам нужно будет делать эту таблицу за раз. Нет единого оператора, который делал бы это для всех таблиц в схеме.
Вы можете получить список таблиц из INFORMATION_SCHEMA.TABLES:
SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = <old-schema>;
Затем для каждой таблицы, возвращаемой этим запрос, запустите оператор:
CREATE TABLE <new-schema>.<table-name> LIKE <old-schema>.<table-name>;
Вы должны написать код, чтобы выполнить l oop, чтобы сделать это.
По вашему комментарию:
Если вы также хотите скопировать данные, вы можете использовать INSERT ... SELECT .
INSERT INTO <new-schema>.<table-name>
SELECT * FROM <old-schema>.<table-name>;
Это займет в то время как, пропорционально количеству строк и количеству индексов, которые необходимо обновить в вашей таблице (то есть стоимость записи каждой строки умножается на количество индексов).
Обратите внимание, что это блокирует строки он читает из вашей старой таблицы, пока выполняется INSERT ... SELECT. Если вам нужно продолжить запись в старую таблицу, пока это происходит, я бы рекомендовал использовать pt-archiver или pt-table-syn c для копирования.