最近在工作的時候,要將原來在本機開發的 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).
NOTE: This only
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(給所有的表加讀鎖)