Answers:
没有用于转储视图的特定选项。
您可以尝试以下方法:
mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql
您应该能够看到视图。这表明转储数据库时,视图随其一起提供。
您可以尝试的另一种特技,仅是获取视图,是这样的:
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
试试看 !!!
--all-databases
指定所需的数据库。
这样做的最好的答案很可能是这一个 由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"
如果要将此类内容转换为Shell脚本,我还建议使用--defaults-extra-file = CREDSFILENAME参数,这样就无需在脚本中指定用户/密码。
凭证文件如下所示:
[client]
username=YourUsernameHere
password=YourPasswordHere