MySQL的備份對象mysqldump的基本應用敕令總結。本站提示廣大學習愛好者:(MySQL的備份對象mysqldump的基本應用敕令總結)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL的備份對象mysqldump的基本應用敕令總結正文
MySQL數據庫的備份對象有許多,不外這裡引見的是一個玲珑好用的mysqldump對象,位於數據庫目次下bin/mysqldump.exe.這幾天用phpMyAdmin備份數據庫的時刻湧現亂碼,重復在當地跟長途的Dreamhost空間上測試了數據庫,然則照樣導出數據庫會湧現亂碼,應當是phpMyAdmin湧現的成績,數據庫自己沒有成績.扯遠咯,呵呵.我Google到的關於mysqldump對象的相干用法.
假如主機主機支撐 Shell 的話,可以 SSH 上岸主機,履行以下的敕令完成備份與恢復,合適在Dreamhost,Bluehost等空間上.
導出數據庫:
mysqldump -h HOSTNAME -uUSERNAME -p DBNAME > exported_db.sql
導入數據庫:
mysql -h HOSTNAME -uUSERNAME -p DBNAME < exported_db.sql
HOSTNAME 是數據庫主機名,USERNAME 和 DBNAME 分離是上岸 ID 和數據庫名,導出的數據庫寄存在 exported_db.sql 文件裡。 巧克力工場(Beta5):Wordpress 超年夜數據庫的導入.
應用mysqldump:
(mysqldump敕令位於mysql/bin/目次中) //要專到mysql/bin/目次中能力應用,直接cmd運轉敕令窗口應用不了,專到數據庫地點的mysql/bin/目次中應用.
根本用法是:
shell> mysqldump [OPTIONS] database [tables]
假如你不給定任何表,全部數據庫將被導出。
經由過程履行mysqldump –help,你能獲得你mysqldump的版本支撐的選項表。
留意,假如你運轉mysqldump沒有–quick或–opt選項,mysqldump將在導出成果前裝載全部成果集到內存中,假如你正在導出一個年夜的數據庫,這將能夠是一個成績。
幾個經常使用用例:
1.導出全部數據庫
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名
mysqldump -u root -p dataname >dataname.sql
這個時刻會提醒要你輸出root用戶名的暗碼,輸出暗碼後dataname數據庫就勝利備份在mysql/bin/目次中.
2.導出一個表
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名
mysqldump -u root -p dataname users> dataname_users.sql
3.導出一個數據庫構造
mysqldump -u wcnc -p -d –add-drop-table smgp_apps_wcnc >d:/wcnc_db.sql
-d 沒稀有據 –add-drop-table 在每一個create語句之前增長一個drop table
4.導入數據庫
經常使用source 敕令
進入mysql數據庫掌握台,
如mysql -u root -p
假如您像裝載全部數據庫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 "
如後面所講的,您可使用這一選項來過挑選將要放到 導出文件的數據。
假定您須要為一個表單中要用到的帳號樹立一個文件,司理要看本年(2004年)一切的定單(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'
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)的辦法來贊助獲得報表。