Odpowiedzi:
Nie ma konkretnej opcji odrzucania widoków.
Możesz spróbować:
mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql
Powinieneś być w stanie zobaczyć widoki. Oznacza to, że gdy zrzucisz bazy danych, widok jest z nim związany.
Kolejny wyczyn, którego możesz spróbować, aby uzyskać tylko widoki, to:
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
Spróbuj !!!
--all-databases
, określ bazę danych, którą chcesz.
Najlepszą odpowiedzią na to pytanie jest prawdopodobnie ta autorstwa olliiiver, którą nieco zmodyfikowałem. W szczególności eksportuje zapytanie o tablicę upuszczania oraz zapytanie o utworzenie lub zamianę widoku dla każdego widoku w systemie, bez potrzeby manipulowania żadnymi tabelami. Zapytanie o tablicę zrzutu jest często ważne, ponieważ mysqldump najwyraźniej lubi odtwarzać widoki jako tabele, chyba że umieścisz każdy widok we własnym parametrze --ignore-table, co byłoby denerwujące. Wykorzystuje INFORMACJE_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"
Jeśli chcesz zamienić coś takiego w skrypt powłoki, polecam również użycie parametru --defaults-extra-file = CREDSFILENAME, abyś nie musiał określać użytkownika / hasła w skrypcie.
Plik poświadczeń wygląda następująco:
[client]
username=YourUsernameHere
password=YourPasswordHere