mysql中的mysqldump命令使用詳解
mysqldump工具很多方面類似相反作用的工具mysqlimport。它們有一些同樣的選項。但mysqldump能夠做更多的事情。它可以把整個資料庫裝載到乙個單獨的文字檔案中。這個檔案包含有所有重建您的資料庫所需要的sql命令。這個命令取得所有的模式(schema,後面有解釋)並且將其轉換成ddl語法(create語句,即資料庫定義語句),取得所有的資料,並且從這些資料中建立insert語句。這個工具將您的資料庫中所有的設計倒轉。因為所有的東西都被包含到了乙個文字檔案中。這個文字檔案可以用乙個簡單的批處理和乙個合適sql語句導回到mysql中。這個工具令人難以置信地簡單而快速。決不會有半點讓人頭疼地地方。
因此,如果您像裝載整個資料庫meet_a_geek的內容到乙個檔案中,可以使用下面的命令:
bin/mysqldump –p meet_a_geek > meetageek_dump_file.txt
這個語句也允許您指定乙個表進行dump(備份/匯出/裝載?)。如果您只是希望把資料庫meet_a_geek中的表orders中的整個內容匯出到乙個檔案,可以使用下面的命令:
bin/mysqldump –p meet_a_geek orders >meetageek_orders.txt
這個非常的靈活,您甚至可以使用where從句來選擇您需要的記錄匯出到檔案中。要達到這樣的目的,可以使用類似於下面的命令:
bin/mysqldump –p –where="order_id > 2000" meet_a_geek orders > special_dump.txt
mysqldump工具有大量的選項,部分選項如下表:
選項/option 作用/action performed
--add-drop-table
這個選項將會在每乙個表的前面加上drop table if exists語句,這樣可以保證導回mysql資料庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除
--add-locks
這個選項會在insert語句中捆上乙個lock table和unlock table語句。這就防止在這些記錄被再次匯入資料庫時其他使用者對錶進行的操作
-c or - complete_insert
這個選項使得mysqldump命令給每乙個產生insert語句加上列(field)的名字。當把資料匯出導另外乙個資料庫時這個選項很有用。
--delayed-insert 在insert命令中加入delay選項
-f or -flush-logs 使用這個選項,在執行匯出之前將會重新整理mysql伺服器的log.
-f or -force 使用這個選項,即使有錯誤發生,仍然繼續匯出
--full 這個選項把附加資訊也加到create table的語句中
-l or -lock-tables 使用這個選項,匯出表的時候伺服器將會給表加鎖。
-t or -no-create- info
這個選項使的mysqldump命令不建立create table語句,這個選項在您只需要資料而不需要ddl(資料庫定義語句)時很方便。
-d or -no-data 這個選項使的mysqldump命令不建立insert語句。 在您只需要ddl語句時,可以使用這個選項。
--opt 此選項將開啟所有會提高檔案匯出速度和創造乙個可以更快匯入的檔案的選項。
-q or -quick 這個選項使得mysql不會把整個匯出的內容讀入記憶體再執行匯出,而是在讀到的時候就寫入導檔案中。
-t path or -tab = path 這個選項將會建立兩個檔案,乙個檔案包含ddl語句或者表建立語句,另乙個檔案包含資料。ddl檔案被命名為table_name.sql,資料檔案被命名為table_name.txt.路徑名是存放這兩個檔案的目錄。目錄必須已經存在,並且命令的使用者有對檔案的特權。
-w "where clause" or -where = "where clause "
如前面所講的,您可以使用這一選項來過篩選將要放到 匯出檔案的資料。
假定您需要為乙個表單中要用到的帳號建立乙個檔案,經理要看今年(2023年)所有的訂單(orders),它們並不對ddl感興趣,並且需要檔案有逗號分隔,因為這樣就很容易匯入到excel中。 為了完成這個人物,您可以使用下面的句子:
bin/mysqldump –p –where "order_date >='2000-01-01'"
–tab = /home/mark –no-create-info –fields-terminated-by=, meet_a_geek orders
這將會得到您想要的結果。
schema:模式
the set of statements, expressed in data definition language, that completely describe the structure of a data base.
一組以資料定義語言來表達的語句集,該語句集完整地描述了資料庫的結構。
select into outfile :
如果您覺得mysqldump工具不夠酷,就使用select into outfile吧, mysql同樣提供乙個跟load data infile命令有相反作用的命令,這就是select into outfile 命令,這兩個命令有很多的相似之處。首先,它們有所有的選項幾乎相同。現在您需要完成前面用mysqldump完成的功能,可以依照下面的步驟進行操作:
1. 確保mysqld程序(服務)已經在執行
2. cd /usr/local/mysql
3. bin/mysqladmin ping ;// 如果這個句子通不過,可以用這個:mysqladmin -u root -p ping
mysqladmin ping用於檢測mysqld的狀態,is alive說明正在執行,出錯則可能需要使用者名稱和密碼。
4. 啟動mysql 監聽程式.
5. bin/mysql –p meet_a_geek;// 進入mysql命令列,並且開啟資料庫meet_a_geek,需要輸入密碼
6. 在命令列中,輸入一下命令:
select * into outfile '/home/mark/orders.txt'
fields
terminated by = ','
from orders
where order_date >= '2000-01-01'
在你按了return(回車)之後,檔案就建立了。這個句子就像乙個規則的select語句,只是把想螢幕的輸出重定向到了檔案中。這意味這您可以使用join來實現多表的高階查詢。這個特點也可以被用作乙個報表產生器。
比方說,您可以組合這一章中討論的方法來產生乙個非常有趣的查詢,試試這個:
在mysql目錄建立乙個名為report_g.rpt 的文字檔案,加入下面的行:
use meet_a_geek;
insert into customers (customer_id, last_name, first_name)
values (null, "kinnard", "vicky");
insert into customers (customer_id, last_name, first_name)
values (null, "kinnard", "steven");
insert into customers (customer_id, last_name, first_name)
values (null, "brown", "sam");
select last_name into outfile '/home/mark/report.rpt'
from customers where customer_id > 1;
然後確認 mysql程序在執行,並且您在mysql目錄中, 輸入下面的命令:
bin/mysql < report_g.rpt檢查您命名作為輸出的檔案,這個檔案將會包含所有您在customers表中輸入的顧客的姓。 如您所見,您可以使用今天學到的匯入/匯出(import/export)的方法來幫助得到報表。
mysql的dump備份 mysqldump備份
1 備份命令 格式 mysqldump h主機名 p埠 u使用者名稱 p密碼 database 資料庫名 檔名.sql 例如 mysqldump h 192.168.1.100 p 3306 uroot ppassword database cmdb dump.sql 2 備份壓縮 匯出的資料有可能...
MySQL簡單的備份恢復(mysqldump)
mysql使用最為廣泛的備份工具是mysqldump。使用mysqldump進行基本的資料庫備份恢復。備份乙個資料庫 mysqldump u root p linuxcast linuxcast backup.sql從乙個備份檔案恢復乙個資料庫 mysql u root p linuxcast li...
MySQL 資料備份與還原 mysqldump
1 使用mysqldump命令備份 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條insert語句。然...