最近在使用mysql的時候,經常要遇到匯出或匯入資料的情況,對於一些簡單的,可以直接使用navicate直接匯出結果,但是有很多時候,由於機器在遠端,並且是線上機器的情況下,在跳轉一次跳轉還連結不到mysql的時候,navicate就不能用這種方法去導出了,搜尋了網路上的一些文章,大概將mysql導入導出的情況做個總結,如下:
mysqldump -h 127.0.0.1 -u name -p dbname >name.sql
將127.0.0.1的資料庫dbname匯出到name.sql檔案裡面
mysqldump -h 127.0.0.1 -u username -ppassword dbname tablename >name.sql
將ip 127.0.0.1上面的資料庫dbname裡面的tablename表格匯出到name.sql檔案裡面
mysqldump -h 127.0.0.1 -u username -ppassword dbname tablename --where="id>10 limit 10000" >name.sql
上面一、二的情況皆屬於將所有的表格或函式庫全部匯出出來,但是有些時候我們只是想要部分的數據,這部分資料符合某些條件,對於上述的結構就是
將資料庫dbname裡面的tablename表裡面的id>10 的資料取出來100條,匯出到name.sql檔案裡面
mysqldump -h 127.0.0.1 -u username -ppassword --single-transaction dbname tablename>name.sql
有時候匯出的時候並沒有鎖定表的權限,例如如果你只是一個只讀權限的話,很可能沒有鎖定表的權限,這個時候只要加上一句 --single-transaction 就可以不鎖表進行匯出
上述對於一、二、三來說都會對資料庫進行鎖定表,加上此指令即可達到不鎖定表導資料的目的
mysqldump -h 127.0.0.1 -u username -ppassword --single-transaction -d dbname tablename>name.sql
有時候我們不是要匯出數據,只是要匯出表結構,比如說你要按照這個表結構完全去複製創建這個表結構,這種情況下可以使用的方法很多,比如可以直接連上資料庫,使用show create table tablename指令,也可以得到建表的語句;這裡只是提供另外一種匯出表結構的辦法,如果要只匯出表結構的話,可以加-d就可以
mysqldump -h 127.0.0.1 -u username -ppassword --single-transaction -t dbname tablename>name.sql
如果要只導出數據,但是不導出表結構的話,使用-t就可以達到目的,本來使用這一句的目的是為了匯出資料庫裡面的視圖,因為沒有show create view的權限,只能嘗試能否只匯出數據,結果發現不太可以,再琢磨琢磨,再次mark一下,方便之後使用
use dbname; set names gbk; source /d1/name/name.sql;
匯入資料的時候只要連上資料庫,使用source就可以,之前可以設定編碼格式為gbk或utf -8等,這樣不會出現中文的亂碼
|
| #flush privileges;
|
以上就是mysql遠端機器匯入匯出資料 鎖定表不鎖定表 部分資料或全部的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!