我知道SQL轉儲是一系列反映數據庫內所有記錄的插入SQL語句。但是它用於什麼?我們爲什麼要轉儲數據庫記錄?每個數據庫是否都支持傾銷功能?sql-dump是什麼?
6
A
回答
14
有點奇怪,這實際上是備份數據庫的常用方法。由於各種複雜的原因,複製實際保存數據的文件本身並不是常用的備份方法。
所有的數據庫都以這種方式工作,或者至少我從來沒有聽說過沒有:它們都有一個工具來導出一堆SQL代碼,它們在執行時會以相同的狀態重新創建數據庫它在轉儲開始時。
但是,由於不同數據庫系統使用的SQL各種方言之間存在細微的差異,因此這些各種格式通常是不兼容的。有些工具可以在其中一些工具之間進行轉換,但我不知道任何處理每種可能情況的「Rosetta Stone」。
除了作爲備份數據庫的主要方法之外,當在不同服務器之間(例如從開發到測試到生產)暫存分貝數據時,此技術也很有用。
2
mysqldump產生一個或多個表或數據庫的數據的SQL表示。由於格式是SQL,因此它將在任何其他MySQL服務器上運行,而不管體系結構或主要/次要版本(顯然,視圖對於4.x等不起作用,但主要與前向兼容)。
還有另外一個工具,mysqlhotcopy,但是由於這個工具生成二進制文件,它們綁定到它們已經生成的機器上,並且不能在其他地方使用。 SQL具有在任何MySQL服務器上運行的優點,並且獨立於數據庫的基礎文件存儲機制。
兩個主要用例傾銷SQL是:
- 備份數據庫的數據。可以將SQL讀入(「回放」)到一個空的數據庫服務器,並且它將重新創建表格並用行填充它們。
- 將數據遷移到其他服務器。假設你從MySQL 5.0升級到5.1。你有兩臺機器。您可以使用mysqldump在5.0機器上生成SQL轉儲,並將其轉儲到5.1中。
有一些不太常見的用途。例如,應用程序數據庫的SQL快照可用於針對已知狀態進行單元測試。也可以將SQL代碼轉換成另一種方言,例如, PostgeSQL或SQLite,將您的數據移植到另一個數據庫。
您詢問其他數據庫是否提供SQL轉儲功能。幾乎所有情況下的答案都是肯定的。 PostgreSQL提供了pg_dump,SQLite有一個.dump
命令等。
相關問題
- 1. 錯誤代碼13 - 對sqldump的進口
- 2. 從Ubuntu機器導入SQLDump到SQL Server
- 3. 如何設置CakePHP調試SQLdump限制
- 4. 什麼「?」做?什麼是__FILE__?
- 5. 什麼是<NS0:什麼?
- 6. 什麼是setDetailItem:做什麼?
- 7. 什麼是純SVG和什麼是SMIL?
- 8. 春天 - 什麼是豆,什麼不是?
- 9. 什麼是PPC,這是什麼意思?
- 10. 是什麼代碼是什麼意思?
- 11. 什麼是session_reset()到底是什麼?
- 12. 是什麼!<是什麼意思?
- 13. 是什麼意思:是什麼意思?
- 14. 這是什麼`_time_independent_equals`是什麼意思?
- 15. 什麼是.size是什麼意思
- 16. 什麼是()=> {}是什麼意思?
- 17. 什麼是Ext.apply xtype是什麼意思?
- 18. 什麼是$ http timeout是什麼意思?
- 19. 是什麼??('')。?。?`是什麼意思?
- 20. dir是什麼? dir +「/」:「」是什麼意思?
- 21. 什麼是AjaxAdapter和什麼是query()?
- 22. 什麼是stringWithFormat:@「%@ - 1」是什麼意思?
- 23. Django:什麼是`sys.path`應該是什麼?
- 24. 什麼是MIME?它到底是什麼?
- 25. 什麼是PHPCI - 什麼是構建?
- 26. 什麼是流量?什麼是`initialize`在做什麼?
- 27. 什麼是JSTL?什麼是JSP標籤庫?有什麼區別?
- 28. 究竟是什麼ObjectFactory是什麼,它用於什麼?
- 29. 什麼是string array [] =「」;是什麼意思?爲什麼它有效?
- 30. 什麼是-XX,-X和-d在java中?什麼是-XX:+是什麼意思?什麼-XX: - 意味着什麼?