2013年9月11日 星期三

mysqldump 參數說明


MySql資料庫備份mysqldump參數選項

範例 :  mysqldump --user=root --password=xxxxx --host=your_sql_host --no-create-info --where="created_at >= '20131201000000'"  database_name table_name  > backup_db.sql

將 latin1 轉成 utf8 資料
mysqldump -h DB_HOST -u DB_USER -p DB_PASSWORD --opt --quote-names \
    --skip-set-charset --default-character-set=latin1 DB_NAME > DB_NAME-dump.sql

mysql -h DB_HOST -u DB_USER -p DB_PASSWORD \
    --default-character-set=utf8 DB_NAME < DB_NAME-dump.sql

另一招一行完成:
mysqldump --add-drop-table -u root --password='xxx' database | sed -e 's/CHARSET\=latin1/CHARSET\=utf8\ COLLATE\=utf8_general_ci/g' | iconv -f latin1 -t utf8 | mysql -u root --password='password' database

1. 以 root 身分登入 mysql,將 x10001 資料庫中的 tblItem 資料輸出到 test.sql
mysqldump –password=123456 –allow-keywords -q -Q -c -e –databases x10001 –tables tblItem > test.sql
簡易參數:
-Q: 資料表和欄位名稱部分加入“
-q: 不使用緩衝(buffer)直接輸出到標準輸出裝置(stdout)
-c: 使用完整的 insert 敘述
-e: 使用新的 insert 多行語法
–password: 登入的密碼
–allow-keywords: 允許欄位名稱使用保留字,會自動將保留字前面加上 table 名稱
–databases: 指定傾印的資料庫名稱
–tables: 指傾印的 table 名稱
2. 假如只是要輸出資料表的結構,加入 -d 或 –no-data 參數
mysqldump –password=123456 –allow-keywords -d -Q -e –databases x10001 –tables tblItem > test.sql
3. 假如要傾印整個資料庫的資料表資訊,不要加 –table 參數
mysqldump –password=123456 –allow-keywords -d -q -Q -c -e –databases x10001  > test.sql
 

PS: 有顏色部分都是需要照自己的方式去設定.

實用程式,為備份或為把資料轉移到另外的SQL伺服器上傾倒一個資料庫或許多資料庫。傾倒將包含創建表或充實表的SQL語句。

shell> mysqldump [OPTIONS] database [tables]

如果你不給定任何表,整個資料庫將被傾倒。

通過執行mysqldump --help,你能得到你mysqldump的版本支援的選項表。

注意,如果你運行mysqldump沒有--quick或--opt選項,mysqldump將在傾倒結果前裝載整個結果集到記憶體中,如果你正在傾倒一個大的資料庫,這將可能是一個問題。

mysqldump支援下列選項:

--add-locks
在每個表傾倒之前增加LOCK TABLES並且之後UNLOCK TABLE。(為了使得更快地插入到MySQL)。

--add-drop-table
在每個create語句之前增加一個drop table。

--allow-keywords
允許創建是關鍵字的列名字。這由表名首碼於每個列名做到。

-c, --complete-insert
使用完整的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子句相同的含義。見7.16 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 br="">
最常見的mysqldump使用可能製作整個資料庫的一個備份:

mysqldump --opt database > backup-file.sql

但是它對用來自於一個資料庫的資訊充實另外一個MySQL資料庫也是有用的:

mysqldump --opt database | mysql --host=remote-host -C database

指定dump出來的語系
mysqldump --default-character-set=big5

or

mysqldump --default-character-set=latin1

【下列文章您可能也有興趣】

沒有留言: