#mysql #mysql-8.0
Вопрос:
У меня есть доступ к удаленной базе данных, и я хотел бы сбросить схему и данные нескольких представлений на свой локальный компьютер и загрузить их в свою локальную базу данных в виде таблиц быстрым и простым способом.
Мне не хватает привилегий пользователя для запуска CREATE TABLE AS (SELECT * FROM target_view)
, иначе это было бы тривиально решить. Другими словами, я хочу получить и воссоздать «составную» схему target_view, как если бы это была таблица.
Я не хочу выводить SHOW CREATE VIEW
, так как это показывает только сложную SELECT
инструкцию с соединениями с различными таблицами на удаленном компьютере, доступ к которому у меня ограничен. И проблема, которую я вижу в MySQL 8.x, заключается в том, что когда я запускаю SHOW CREATE TABLE
представление, эта команда просто действует как псевдоним SHOW CREATE VIEW
(что разумно).
К сожалению, я могу запустить DESCRIBE
и увидеть схему этих представлений в том виде, в каком они были таблицами. Мне действительно просто нужно преобразовать эту информацию в CREATE TABLE
инструкцию, не имея возможности выполнить CREATE TABLE
ее .
В случае, если это не было очевидно, главное-избежать ручной реконструкции табличных схем этих представлений (поскольку они могут измениться в будущем). Я также хочу избежать решения обратной разработки общей конструкции таблицы из 20-30 общих столбцов VARCHAR или текста из дампа CSV.
Комментарии:
1. Вы можете найти хороший ответ на этот вопрос по адресу dba.stackexchange.com. Это пограничный вопрос «администратора».
2. Есть ли у вас привилегии для запуска СОЗДАТЬ ВРЕМЕННУЮ ТАБЛИЦУ? Для этого не требуется привилегия СОЗДАНИЯ.
3. @BillKarwin отличное предложение, но нет, я получаю ошибку «Отказано в доступе».
4. Хорошо, тогда у вас тоже может не быть этой привилегии. Вы можете подтвердить
SHOW GRANTS
это заявлением.
Ответ №1:
Я не знаю никакого способа отображения метаданных результирующего набора в синтаксисе СОЗДАНИЯ ТАБЛИЦЫ.
Что бы я сделал, учитывая ваши обстоятельства, сначала создайте в своем локальном экземпляре MySQL базовую таблицу и представление, затем вы можете использовать CREATE TABLE AS SELECT ...
синтаксис для создания конкретной таблицы, соответствующей метаданным результирующего набора представления.