Лучший ответ на это, вероятно , это один
по olliiiver , который я слегка модифицировали. Он специально экспортирует запрос удаленной таблицы и запрос создания или замены представления для каждого представления в системе, без необходимости возиться с какими-либо таблицами. Запрос удаленной таблицы часто важен, поскольку mysqldump, по-видимому, любит воссоздавать представления в виде таблиц, если вы не включаете каждое представление в его собственный параметр --ignore-table, что может раздражать. Он использует INFORMATION_SCHEMA.
mysql --skip-column-names --batch \
-e "SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_SCHEMA, '.', TABLE_NAME, \
'; CREATE OR REPLACE VIEW ', TABLE_SCHEMA, '.', TABLE_NAME, ' AS ', \
VIEW_DEFINITION, '; ') AS q FROM INFORMATION_SCHEMA.VIEWS"
Если вы хотите превратить что-то подобное в сценарий оболочки, я также рекомендую использовать параметр --defaults-extra-file = CREDSFILENAME, чтобы вам не приходилось указывать user / pass в сценарии.
Файл учетных данных выглядит следующим образом:
[client]
username=YourUsernameHere
password=YourPasswordHere