表資料匯出到一個文字檔最簡單的方法是使用SELECT... INTO OUTFILE語句的查詢結果直接匯出到一個檔案在伺服器主機上。
匯出資料的SELECT...INTO OUTFILE聲明:
這句話的文法結合了常規的SELECT INTO OUTFILE檔案名稱的末尾。預設的輸出格式是相同的LOAD DATA,所以下面的語句匯出tutorials_tbl的表定位字元分隔的,換行結尾的檔案到/tmp/tutorials.txt:
mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
也可以更改輸出格式,使用選項來指示如何引用和分隔列和記錄。 CRLF終止線要匯出tutorial_tbl的CSV格式的表格,使用這樣的語句:
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n';
SELECT ... INTO OUTFILE具有以下屬性:
- 由MySQL伺服器直接建立輸出檔案,這樣的檔案名稱應指定您希望在伺服器主機上的檔案將被寫入。沒有本地版本的LOAD DATA LOCAL版本的類似的語句。
- 必須要有MySQL的FILE許可權才能執行的SELECT... INTO語句。
- 輸出檔案必須不存在。這可以防止MySQL從會破壞檔案可能重要。
- 應該在伺服器主機上或一些方法來檢索檔案從該主機的登入帳戶。否則SELECT... INTO OUTFILE可能是沒有價值的。
- 在Unix下,創造了世界可讀的檔案和所擁有的MySQL伺服器。這意味著雖然就可以讀取該檔案,但是不能夠刪除它。
作為未經處理資料的匯出表:
使用mysqldump程式複製或備份表和資料庫。它可以寫表輸出的未經處理資料檔案或為一組的INSERT語句重新建立該表中的記錄。
轉儲一個表,必須指定一個資料檔案 - 選項卡上的選項,表示想要的MySQL伺服器寫入檔案所在的目錄。
使用mysqldump程式複製或備份表和資料庫。它可以寫表輸出的未經處理資料檔案,或為一組的INSERT語句重新建立該表中的記錄。
轉儲一個表,必須指定一個資料檔案 - 選項卡上的選項,表示想要的MySQL伺服器寫入檔案所在的目錄。
$ mysqldump -u root -p --no-create-info \ --tab=/tmp TUTORIALS tutorials_tblpassword ******
在SQL格式匯出表的內容或定義:
一個表中的SQL格式匯出到一個檔案,使用這樣的命令:
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txtpassword ******
這將建立檔案的內容如下:
-- MySQL dump 8.23---- Host: localhost Database: TUTORIALS----------------------------------------------------------- Server version 3.23.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=InnoDB;---- Dumping data for table `tutorials_tbl`--INSERT INTO tutorials_tbl VALUES (1,'Learn PHP','John Poul','2007-05-24');INSERT INTO tutorials_tbl VALUES (2,'Learn MySQL','Abdul S','2007-05-24');INSERT INTO tutorials_tbl VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
要轉儲多個表,他們的名字所有的資料庫名稱參數。要轉儲整個資料庫,不指定任何錶後的資料庫,如下所示:
$ mysqldump -u root -p TUTORIALS > database_dump.txtpassword ******
所有可用的Database Backup主機上使用以下命令:
$ mysqldump -u root -p --all-databases > database_dump.txtpassword ******
在SQL格式匯出表的內容或定義:
這些方法可用於實現資料庫的備份策略。
表或資料庫複寫到另一台主機:
如果要複製的表或資料庫從一個MySQL伺服器,然後使用mysqldump資料庫名和表名。
在源主機上運行以下命令。這將轉儲完整的資料庫到dump.txt檔案:
$ mysqldump -u root -p database_name table_name > dump.txtpassword *****
複製完整的資料庫,而不使用一個特定的表名稱,如上面所解釋。
現在,FTP dump.txt檔案在另一台主機上,使用下面的命令。在運行此命令之前,請確保已建立目標伺服器上的資料庫名稱。
$ mysql -u root -p database_name < dump.txtpassword *****
另一種方法,而無需使用一個中間檔案來完成,mysqldump輸出直接通過網路發送到遠端MySQL伺服器。如果可以串連到兩台伺服器的cookbook 資料庫所在的主機上,使用以下命令:
$ mysqldump -u root -p database_name \ states | mysql -h other-host.com database_name
命令mysqldump的一半串連到本機伺服器,並寫入轉儲輸出管道。 MySQL的一半的命令串連到遠程MySQL伺服器otherhost.com。它讀取輸入管和其他host.com伺服器發送的每個語句。