導出要用到MySQL的mysqldump工具,基本用法是:mysql
$ mysqldump [OPTIONS] [database] [tables]
若是你不給定任何表,整個數據庫將被導出。
經過執行mysqldump --help
,你能獲得你mysqldump
的版本支持的選項表。
注意,若是你運行mysqldump
沒有--quick
或--opt
選項,mysqldump
將在導出結果前裝載整個結果集到內存中,若是你正在導出一個大的數據庫,這將多是一個問題。sql
mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名 mysqldump -u username -p db_name > ~/db.sql
mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名 mysqldump -u db_username -p db_name table_name > ~/db.sql
mysqldump -u username -p -d --add-drop-table db_name >~/db.sql
-d 沒有數據 --add-drop-table 在每一個create語句以前增長一個drop table數據庫
# 進入mysql數據庫控制檯 mysql -u root -p mysql>use 數據庫 # 而後使用source命令,後面參數爲腳本文件(如這裏用到的.sql) mysql>source ~/db.sql
# 製做整個數據庫的一個備份: mysqldump --opt db_name > backup-file.sql # 來自於一個數據庫的信息充實另一個MySQL數據庫 mysqldump --opt db_name | mysql --host=remote-host -C database
因爲mysqldump導出的是完整的SQL語句,因此用mysql客戶程序很容易就能把數據導入了服務器
mysql 庫名 < 文件名 mysqladmin create db_name mysql db_name < backup-file.sql
mysqldump -uroot -pdbPwd -S /tmp/mysqld.sock --default-character-set=utf8 -e -R -d --skip-opt target_db_name > dumpFile.sql
--add-locks
socket
在每一個表導出以前增長LOCK TABLES而且以後UNLOCK TABLE。(爲了使得更快地插入到MySQL)。
--add-drop-table
工具
在每一個create語句以前增長一個drop table。
--allow-keywords
ui
容許建立是關鍵詞的列名字。這由表名前綴於每一個列名作到。
-c
, --complete-insert
debug
使用完整的insert語句(用列名字)。
-C
, --compress
調試
若是客戶和服務器均支持壓縮,壓縮二者間全部的信息。
--delayed
日誌
用INSERT DELAYED命令插入行。
-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子句相同的含義。
-F
, --flush-logs
在開始導出前,洗掉在MySQL服務器中的日誌文件。
-f
, --force
,
即便咱們在一個表導出期間獲得一個SQL錯誤,繼續。
-h
, --host=...
從命名的主機上的MySQL服務器導出數據。缺省主機是localhost。
-l
, --lock-tables
爲開始導出鎖定全部表。
-t
, --no-create-info
不寫入表建立信息(CREATE TABLE語句)
-d
, --no-data
不寫入表的任何行信息。若是你只想獲得一個表的結構的導出,這是頗有用的!
--opt
同`--quick --add-drop-table --add-locks --extended-insert --lock-tables` 應該給你爲讀入一個MySQL服務器的儘量最快的導出。
-pyour_pass
, --password[=your_pass]
與服務器鏈接時使用的口令。若是你不指定「=your_pass」部分,mysqldump須要來自終端的口令。
-P port_num
, --port=port_num
與一臺主機鏈接時使用的TCP/IP端口號。(這用於鏈接到localhost之外的主機,由於它使用 Unix套接字。)
-q
, --quick
不緩衝查詢,直接導出至stdout;使用mysql_use_result()作它。
-S /path/to/socket
, --socket=/path/to/socket
與localhost鏈接時(它是缺省主機)使用的套接字文件。
-T
, --tab=path-to-some-directory
對於每一個給定的表,建立一個table_name.sql文件,它包含SQL CREATE 命令,和一個table_name.txt文件,它包含數據。 注意:這隻有在mysqldump運行在mysqld守護進程運行的同一臺機器上的時候才工做。.txt文件的格式根據--fields-xxx和--lines--xxx選項來定。
-u user_name
, --user=user_name
與服務器鏈接時,MySQL使用的用戶名。缺省值是你的Unix登陸名。
-O var=option
, --set-variable var=option
設置一個變量的值。可能的變量被列在下面。
-v
, --verbose
冗長模式。打印出程序所作的更多的信息。
-V
, --version
打印版本信息而且退出。
-w
, --where='where-condition'
只導出被選擇了的記錄;注意引號是強制的! `--where=user='jimf', -wuserid>1, -wuserid<1`