如果要使用--tab開關,還必須有FILE的權限
准備工作:
庫以及表:
Table Create Table pwss CREATE TABLE `pwss` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(64) DEFAULT NULL,
`description` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
MySQL> grant usage on *.* to identifIEd by 'dump_user';
Query OK, 0 rows affected (0.00 sec)
(這個語句可以省略,因為默認的都有USAGE權限。)
MySQL> grant lock tables on *.* to ;
Query OK, 0 rows affected (0.00 sec)
MySQL> flush privileges;
Query OK, 0 rows affected (0.01 sec)
MySQL> show grants for ; -----------------------------------------+
| Grants for dump_user@localhost +------------------------------------------------------------------------------- | GRANT LOCK TABLES ON *.* TO IDENTIFIED BY PASSWord '*9
E3A8684DFAF643FD3D08D24C0432C0101417D8B' | -----------------------------------------+
1 row in set (0.00 sec)如果您想把整個數據庫woshitTest的內容導到一個文件中,可以使用下面的命令:
C:\>MySQLdump -udump_user -pdump_user woshitTest > c:\\woshitTestDumpFile.txt(默認的是當前路徑,其他的請用完整路徑)
這條命令行也可以加上以下開關:
--databases (--all-databases)
如果只是想單獨把表 pwSS 導出:
C:\>MySQLdump -udump_user -pdump_user woshitTest pwss> c:\\woshitTestDumpFilePwss.txt
如果你想要導出某一條記錄的話,帶上開關--where="你的SQL語句"
--where="id=1" 或者 -w="id=1"
MYSQLDUMP 還有其他的開關列表如下: --add-drop-table這個選項將會在每一個表的前面加上DROP TABLE IF EXISTS語句,這樣可以保證IMPORT您的MySQL數據庫的時候不會出錯,因為每次導回的時候,都會首先檢查表是否存在,存在就刪除 --add-locks(這個開關我個人不推薦)這個選項會在INSERT語句中捆上一個LOCK TABLE和UNLOCK TABLE語句。這就防止在這些記錄被再次導入數據庫時其他用戶對表進行的操作
實例:
LOCK TABLES `pwss` WRITE; INSERT INTO `pwss` VALUES (1,'weiwei','I love this girl'); UNLOCK TABLES; -c or - complete_insert這個選項使得MySQLdump命令給每一個產生INSERT語句加上列(fIEld)的名字。當把數據導出導另外一個數據庫時這個選項很有用。
實例:
INSERT INTO `pwss` (`id`, `username`, `description`) VALUES (1,'weiwei','I love this girl'); --delayed-insert
在INSERT命令中加入DELAY選項 -F or -flush-logs
在執行導出之前將會刷新MySQL服務器的log. -f or -force
即使有錯誤發生,仍然繼續導出 -l or --lock-tables
導出表的時候服務器將會給表加鎖。(同上:--add-locks) -t or --no-create- info這個選項使的MySQLdump命令不創建CREATE TABLE語句,這個選項在您只需要數據而不需要DDL(數據庫定義語句)時很方便。 -d or --no-data
這個選項使的MySQLdump命令不創建INSERT語句。在您只需要DDL語句時,可以使用這個選項。 --opt
此選項將打開所有會提高文件導出速度和創造一個可以更快導入的文件的選項。(個人推薦。
如果沒有使用--opt,MySQLDUMP就會把整個結果集裝載到內存中,然後導出。如果數據非常大就會導致導出失敗。這個開關在默認情況下是啟用的,如果不想啟用它:--skip-opt來關閉它。) -q or -quick
這個選項使得MySQL不會把整個導出的內容讀入內存再執行導出,而是在讀到的時候就寫入導文件中。這個和上面的開關一個意思。 --tab = path
這個選項將會創建兩個文件,一個文件包含DDL語句或者表創建語句,另一個文件包含數據。DDL文件被命名為tableName.sql,數據文件被命名為tableName.txt.路徑名是存放這兩個文件的目錄。目錄必須已經存在,並且命令的使用者有對文件的特權。
(tableName.txt的結果相當於用select * from tablename into outfile的生成數據) --allow-keyWords -C, --compress 縮兩者間所有的信息。 -e, --extended-insert 使用全新多行INSERT語法。(給出更緊縮並且更快的插入語句) -#, --debug[=option_string]
跟蹤程序的使用(為了調試)。 --help
--fields-terminated-by=... --fields-enclosed-by=... --fields-optionally-enclosed-by=... --fields-escaped-by=... --fIElds-terminated-by=...
這些選擇與-T選擇一起使用,並且有相應的LOAD DATA INFILE子句相同的含義。 -pyour_pass, --passWord[=your_pass]
與服務器連接時使用的口令。如果你不指定“=your_pass”部分,MySQLdump需要來自終端的口令。 -P port_num, --port=port_num
與一台主機連接時使用的TCP/IP端口號。(任何系統通用) -S /path/to/socket, --socket=/path/to/socket
與localhost連接時(它是缺省主機)使用的套接字文件。 (用於Linux系統) -u user_name, --user=userName
與服務器連接時,MySQL使用的用戶名。 (Linux系統缺省的who am i 的結果) -O var=option, --set-variable var=option
設置一個變量的值。可能的變量被列在下面。
-v, --verbose
冗長模式。打印出程序所做的更多的信息。(也就是詳細信息)
-B 開關可以生成CREATE DATABASE語句:
C:\>MySQLdump -udump_user -pdump_user -B woshitTest --add-drop-table -c> c:\\1.txt
--tables
這個很有用的一個開關。
用於跳過--databases或者-B開關。該開關後面的所有名字均被認為是表名。
實例:
C:\>MySQLdump -udump_user -pdump_user -B woshitTest --tables pwss --add-drop-table -c -R
>> c:\\1.txt
如果要導出存儲過程,加 -R開關即可。
實例:
C:\>MySQLdump -udump_user -pdump_user woshitTest pwss --add-drop-table -c --tab="c:\\" -
v
-- Connecting to localhost...
-- RetrIEving table structure for table pwss...
-- Sending SELECT query...
-- Disconnecting from localhost...
-V, --version
打印版本信息並且退出。
這裡只談了備份,不過恢復是最最主要的:
MySQL -udump_user -pdump_user woshittest< 1.txt