Réponses:
Il n'y a pas d'option spécifique pour vider les vues.
Vous pouvez essayer ce qui suit:
mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql
Vous devriez pouvoir voir les vues. Cela indique que lorsque vous sauvegardez des bases de données, la vue est fournie avec.
Un autre coup que vous pouvez essayer, juste pour obtenir les vues uniquement, est le suivant:
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
Essaie !!!
--all-databases
, spécifiez la base de données souhaitée.
La meilleure réponse à cela est probablement celle d' olliiiver que j'ai légèrement modifiée. Il exporte spécifiquement une requête de table de dépôt et une requête de création ou de remplacement de vue pour chaque vue du système, sans avoir à jouer avec les tables. La requête de suppression de table est souvent importante, car mysqldump aime apparemment recréer des vues sous forme de tables, sauf si vous incluez chaque vue dans son propre paramètre --ignore-table, ce qui serait ennuyeux. Il utilise 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"
Si vous voulez transformer quelque chose comme ça en script shell, je recommande également d'utiliser le paramètre --defaults-extra-file = CREDSFILENAME, afin que vous n'ayez pas besoin de spécifier user / pass dans le script.
Le fichier d'informations d'identification ressemble à ceci:
[client]
username=YourUsernameHere
password=YourPasswordHere