回答
通過備份,我假設你的意思只是沒有數據的定義。
現在看來,mysqldump並沒有區分VIEWs和TABLEs,所以最好的辦法是將命令行上的VIEWs顯式指定給mysqldump,或者在mysqldump之前動態地找出這個列表,然後傳遞它像以前一樣下降。
您可以使用此查詢得到一個特定的數據庫中的所有觀點:
SHOW FULL TABLES WHERE table_type='view';
注:此從Ken答案從建議的編輯搬到自己的答案。
這裏是利用以上
mysql -u username INFORMATION_SCHEMA
--skip-column-names --batch
-e "select table_name from tables where table_type = 'VIEW'
and table_schema = 'database'"
| xargs mysqldump -u username database
> views.sql
這將提取所有視圖名稱的變體通過查詢該INFORMATION_SCHEMA數據庫,然後通過管道將它們xargs的制訂的mysqldump命令一個完整的命令行的例子。 --skip-column-names和--batch需要使輸出xargs友好。如果您有很多視圖,則此命令行可能會變得太長,在這種情況下,您希望爲該選擇添加某種附加過濾器(例如,查找以給定字符開始的所有視圖)。
我修改Andomar's excellent answer允許數據庫(和其他設置),只指定一次:
#!/bin/bash -e
mysql --skip-column-names --batch -e \
"select table_name from information_schema.views \
where table_schema = database()" $* |
xargs --max-args 1 mysqldump $*
我這個保存爲mysql-dump-views.sh
,並通過調用它:
$ mysql-dump-views.sh -u user -ppassword databasename >dumpfile.sql
在備份意見多個數據庫通過使用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, "; ") table_name from information_schema.views'
謝謝,這非常有幫助。我的觀點分佈在多個數據庫模式中,而這一切都得到了解決。 – thoughtcrimes1984
感謝你 - 非常有用。
一個嗝,但 - 也許因爲我有一個稍微令人費解的一套看法引用其他意見等:
我發現了「定義者」用戶需求存在,並且對目標模式正確的權限,否則由於事物定義不足,mysql不會生成引用其他視圖的視圖。
在生成的:
/* 50013和DEFINER = <user>
@<host>
SQL SECURITY DEFINER */
- >確保<user>
@<host>
是確定你的目標實例,或用替換此字符串使用者。
感謝 索爾斯坦
我會盡可能地堅持的mysqldump的輸出,如OP問,因爲它包含的信息有關,不能用一個簡單的查詢重建視圖的轉換來自INFORMATION_SCHEMA。
這是我從我的源數據庫創建部署視圖腳本:
SOURCEDB="my_source_db"
mysql $SOURCEDB --skip-column-names -B -e \
"show full tables where table_type = 'view'" \
| awk '{print $1}' \
| xargs -I {} mysqldump $SOURCEDB {} > views.sql
- 1. 使用從設備轉儲(InnoDB和MyISAM)的MySQL增量備份
- 2. 無法轉儲mysql備份文件
- 3. 如何使用PHP將MySQL表備份到轉儲?
- 4. 備份使用MySQL
- 5. SVN連續轉儲/備份
- 6. 使用rsync備份MySQL
- 7. 使用phpMyAdmin備份MySQL
- 8. 備份MySQL用戶
- 9. Subversion:轉儲備份,我需要增量備份嗎?
- 10. 使用mysql轉儲
- 11. 如何從轉儲文件恢復Mysql備份?
- 12. 視覺SVN多個存儲庫備份
- 13. 使用從備份到遠程機器的AutoMySQLBackup的MySQL備份
- 14. lvm mysql備份
- 15. 備份mysql
- 16. 使用SVN備份數據庫轉儲文件的影響
- 17. 使用Elasticsearch作爲備份存儲
- 18. 使用C的MySQL數據庫備份#
- 19. 使用java備份mysql數據庫
- 20. 使用DSN的ColdFusion MySQL備份
- 21. 備份mysql數據庫使用php
- 22. Mysql的備份使用要求休眠
- 23. 使用SQLyog進行MySQL表備份
- 24. 使用Mercurial進行Mysql備份
- 25. 使用mysqldump Mysql PHP備份數據庫
- 26. 使用PHP的MySQL數據備份
- 27. 使用備份複製MySQL表
- 28. 使用PHP備份MySQL數據庫
- 29. 備份數據庫使用Mysql查詢
- 30. MySql備份不起作用
感謝,該命令是有用的。 –