最近在工作的時候,要将原來在本機開發的 MySQL存儲過程遷往另一Linux作業系統下的MySQL資料庫,因為表結構等已經在目标資料庫中存在了, 不想直接拷貝資料庫過去,是以用到了 MySQL的存儲過程導出和導入,經上網搜尋發現用Mysqldump工具可以實作,具體用法為:
[root@localhost bin]# mysqldump -uroot -p -hlocalhost -P3306 -n -d -t -R DBName > procedure_name.sql
參數說明:
-n: --no-create-db (沒有建立資料庫的資訊)
-d: --no-data (不導出資料)
-t: --no-create-info (沒有建立資料庫表的資訊)
-R: --routines Dump stored routines (functions and procedures)
-E: --events (導出資料庫中events)
-A: --all-databases (導出所有的資料庫)
-B: --databases db1 db2 (導出指定的資料庫)
Mysqldump是用戶端工具用來備份資料庫或在不同資料庫之間進行資料遷移。備份内容包含建立活裝載表的SQL語句:
主要參數介紹:
1.連接配接選項
-u,--user=name
-p,--password=name
-h,--host=name
-P,--port=#
2.輸出内容選項
--add-drop-database (預設是自動加上的)
--add-drop-table (預設是自動加上的)
-n;--no-create-db
-d;--no-data
-t;--no-create-info
3.輸出格式選項
--compact (精簡格式,将導出時的一些備注省略)
-c --complete-insert (導出資料的語句中,在insert to table values後加上各個字段,如insert into table(tab1,tab2,…) values(value1,value2,…))
-T(指定資料表中的資料備份為單純的資料檔案和建表SQL兩個檔案)
在mysqldump幫助文檔中的說明:
-T, --tab=name Creates tab separated textfile for each table to given
path. (creates .sql and .txt files).<b> NOTE: This only</b>
works if mysqldump is run on the same machine as the
mysqld daemon.
這裡提示,使用-T參數時必須保證運作mysqldump指令的用戶端必須與mysqld伺服器執行個體在同一台機器上。
經 測試可知xx.sql建表檔案是以linux的root使用者建立,而xx.txt檔案則是以linux的mysql使用者建立,是以xxx.txt檔案的存 放路徑一定要保證mysql使用者有讀寫建立檔案的權限。在遠端利用-T備份mysql的表時是不允許的,如果你非的這麼使用你會發現在本地僅僅會建立 xxx.sql檔案,而xxx.txt檔案則沒有,它有可能在遠端運作mysqld的伺服器上出現(僅僅是可能,保證遠端運作mysqld的linux服 務器和本地linux有相同的路徑和使用者權限)。
--fields-terminated-by=name(域分隔符)
--fields-enclosed-by=name(域引用符)
--fields-optionally-enclosed-by=name(域引用可選字元)
--fields-escaped-by=name(轉義字元)
域引用符和域引用可選字元在一次導出中不能同時使用,域引用可選字元隻對認為需要引用的字段作引用,而域引用符對所有的字段都要作引用。
4.字元集選項
--default--character-set=xx
5.其他選項
-F --flush-logs(備份前重新整理日志)
-l --lock-tables(給所有的表加讀鎖)
本文轉自 yubowei 51CTO部落格,原文連結:http://blog.51cto.com/samyubw/223777