ビューとともにデータベース全体をバックアップしようとしています。 mysqldump
コマンドを使用します。それがすべてのビューをコピーするのか、それとも別のコマンドを使用する必要があるのかと思っていました。
答えを提案してください。どんな助けでも大歓迎です。
ビューをダンプするための特定のオプションはありません。
以下を試すことができます。
mysqldump -h... -u... -p... --all-databases --routines --triggers --no-data > /root/MySQLDBSchema.sql
grep "CREATE ALGORITHM" /root/MySQLDBSchema.sql
ビューを表示できるはずです。これは、データベースをダンプすると、ビューにデータベースが付属することを示しています。
ビューのみを取得するために試すことができるもう1つのスタントは次のとおりです。
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
試してみる !!!
これに対する最良の答えはおそらく this one by 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