程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MYSQL入門知識 >> MySQL數據庫導出(備份方法)

MySQL數據庫導出(備份方法)

編輯:MYSQL入門知識

導出表數據到一個文本文件的最簡單方法是使用SELECT... INTO OUTFILE語句直接將導出查詢結果導出到服務器主機上的文件。

使用SELECT... INTO OUTFILE語句導出數據

語句的語法結合了常規的SELECT INTO與OUTFILE filename 末尾。默認的輸出格式與LOAD DATA是一樣的,所以下面的語句導出 tutorials_tbl 表到C:\tutorials.txt 並使用制表符分隔,換行結尾的文件:

mysql> SELECT * FROM tutorials_tbl 
    -> INTO OUTFILE 'C:\tutorials.txt';

可以利用選項來說明如何引號和分隔列,更改記錄輸出格式。 使用CRLF為結束行導出tutorial_tbl 為CSV格式表格,使用以下語句:

mysql> SELECT * FROM passwd INTO OUTFILE 'C:\tutorials.txt'
    -> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
    -> LINES TERMINATED BY '\r\n';

SELECT... INTO OUTFILE具有以下屬性:

  • 輸出的文件是直接由MySQL服務器創建的,因此,文件名應指明想要的文件名,它會被寫到服務器主機上。還有就是語句類似於沒有LOCAL版本的LOAD DATA的本地版本。

  • 必須有MySQL的FILE權限來執行SELECT ... INTO語句。

  • 輸出文件必須還不存在。 這防止MySQL弄錯文件很重要。

  • 應該有服務器主機或某種方式來檢索該主機上登錄帳戶的文件。否則,SELECT ... INTO OUTFILE可能沒有任何值給出。

  • 在UNIX下,文件創建所有人都是可讀的,由MySQL服務器所擁有。這意味著,雖然能夠讀取該文件,可能無法將其刪除。

導出表作為原始數據

mysqldump程序用於復制或備份表和數據庫。它可以寫入表輸出作為一個原始數據文件,或為一組重新創建表中的INSERT語句的記錄。

轉儲一個表作為一個數據文件,必須指定一個--tab 選項指定目錄,讓MySQL服務器寫入文件。

例如,從數據庫test中的tutorials_tbl表轉儲到一個文件在C:\tmp目錄,可使用這樣的命令:

$ mysqldump -u root -p --no-create-info \
            --tab=c:\tmp TEST tutorials_tbl
password ******

以SQL格式導出表內容或定義

以SQL格式的表導出到一個文件,使用這樣的命令:

$ mysqldump -u root -p test tutorials_tbl > dump.txt
password ******

這將創建一個具有以下內容折文件,如下:


-- MySQL dump 8.53
--
-- Host: localhost    Database: test
---------------------------------------------------------
-- Server version       5.5.58

--
-- Table structure for table `tutorials_tbl`
--

CREATE TABLE tutorials_tbl (
  tutorial_id int(11) NOT NULL auto_increment,
  tutorial_title varchar(100) NOT NULL default '',
  tutorial_author varchar(40) NOT NULL default '',
  submission_date date default NULL,
  PRIMARY KEY  (tutorial_id),
  UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE=MyISAM;

--
-- Dumping data for table `tutorials_tbl`
--

INSERT INTO tutorials_tbl 
       VALUES (1,'Learn PHP','John Poul','2012-01-04');
INSERT INTO tutorials_tbl 
       VALUES (2,'Learn MySQL','Abdul S','2015-05-14');
INSERT INTO tutorials_tbl 
       VALUES (3,'JAVA Tutorial','Sanjay','2014-05-10');

要轉儲多個表,所有數據庫名稱參數後跟它們的名字。要轉儲整個數據庫,不需要在數據庫之後命名(附加)任何表:

$ mysqldump -u root -p test > database_dump.txt
password ******

要備份所有可用的數據庫在主機上,使用以下命令:

$ mysqldump -u root -p --all-databases > database_dump.txt
password ******

--all-databases選項可在MySQL 3.23.12之後的版本使用。

該方法可用於實現數據庫的備份策略。

復制表或數據庫到另一台主機

如果想從一個MySQL服務器復制表或數據庫到另一台,使用mysqldump以及數據庫名和表名。

在源主機上運行下面的命令。將轉儲完整的數據庫到文件dump.txt:

$ mysqldump -u root -p database_name table_name > dump.txt
password *****

可以復制完整的數據庫,而無需使用特定的表名,如上所述。

現在ftp dump.txt文件在另一台主機上,並使用下面的命令。運行此命令之前,請確保已創建數據庫名稱在目標服務器上。

$ mysql -u root -p database_name < dump.txt
password *****

另一種方式來實現這一點,無需使用一個中間文件是來發送,mysqldump輸出直接通過網絡到遠程MySQL服務器。如果可以從源數據庫所在的主機那裡連接兩個服務器,使用此命令(請確保兩個服務器可以訪問):

$ mysqldump -u root -p database_name \
       | mysql -h other-host.com database_name

命令 mysqldump 的一半連接到本地服務器,並轉儲輸出寫入管道。另一半MySQL連接到 other-host.com 遠程MySQL服務器。它讀取管道輸入並發送每條語句到other-host.com服務器。



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved