Não há opção específica para despejar visualizações.
Você pode tentar o seguinte:
mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql
Você deve poder ver as visualizações. Isso indica que, quando você despeja bancos de dados, a exibição vem com ele.
Outro truque que você pode tentar, apenas para obter apenas as visualizações, é o seguinte:
mysql -uroot -prootpass AN -e"select concat('SHOW CREATE VIEW ',table_schema,'.',table_name,';') from information_schema.views" | sed 's/;/\\G/g' | mysql --uroot -prootpass > /root/MySQLDBViews.sql
De uma chance !!!
--all-databases
, especifique o banco de dados que você deseja.A melhor resposta para isso é, provavelmente, este pelo olliiiver que eu ligeiramente modificado. Exporta especificamente uma consulta de tabela suspensa e uma consulta de criação ou substituição de visualização para todas as visualizações no sistema, sem precisar mexer em nenhuma tabela. A consulta da tabela suspensa geralmente é importante, pois o mysqldump aparentemente gosta de recriar visualizações como tabelas, a menos que você inclua todas as visualizações em seu próprio parâmetro --ignore-table, o que seria irritante. Ele usa o Information_SCHEMA.
Se você deseja transformar algo assim em um script de shell, também recomendo usar o parâmetro --defaults-extra-file = CREDSFILENAME, para que você não precise especificar user / pass no script.
O arquivo de credenciais fica assim:
fonte