由於公司的mysql是搭建在伺服器上,為了避免對伺服器進行直接改動,我選用了遠端匯出和匯入mysql的資料。
讓我們把目光看到上圖,由於實際資料庫中neem_hanyang下的兩個表alarmdata_h和commerr是空表,我們要做的工作就是把neem_jabil下的兩個表的資料導到neem_hamyang去。
要滿足上面的需求,我們必須匯出neem_jabil下的兩個表alarmdata_h和commerr的資料,在此之前,先讓我們把目錄切換至mysql的安裝目錄,筆者的是c:\program files (x86)\mysql\mysql workbench 5.2 ce。如果你裝的是mysql server版,那麼應該是類似這種c:\program files\mysql\mysql server 5.5,這時請你進入到它的子資料夾bin下面。
假設你現在用的是windows系統,那麼讓我們在dos下輸入cd c:\program files (x86)\mysql\mysql workbench 5.2 ce,如果你是裝的是server版,那麼輸入cd c:\program files\mysql\mysql server 5.5\bin。
看到紅圈圈出來的部分,這就是我們的兩位主角mysql和mysqldump,匯出資料用mysqldump,匯入資料使用mysql
接下來我們就可以在dos下使用mysql或是mysqldump命令來進行資料庫的匯入匯出操作了。
mysqldump的匯出語法如下:
mysqldump -h [-p] -u -p [--default-character-set=charset] database [tablename] >注:-h和[hostname]之間並沒有空格相連,後同之,擴起來的為可選項,可不填
mysqldump -h192.168.0.3 -unikey -p123456 --default-character-set=utf8 neem_jabil commerr > d:/jabil1.sql通過上面的匯出語句,將會在d盤下面建立乙個jabil.sql指令碼檔案,這個指令碼檔案是可執行的,它包含了commerr表的建表細節以及其所有的資料。這就是匯出命令的特點,它不但會匯出資料,還會匯出表或者資料庫的結構資訊。另外如果不帶"
> "這一部分路徑資訊,mysqldump匯出命令或把內容列印在dos介面。
mysql的匯入有兩種語法要介紹,分別是mysql匯入法和source匯入法:
2.2.1 mysql匯入
顧名思義,這種方法則還是用mysql這個主角來匯入,語法規範如下:
mysql -h [-p] -u -p [--default-character-set=charset] database [tablename] <
(此處原文是錯誤的,在此修正,原文說的是通過mysqldump進行匯入)這種匯入方式實質就是執行前面所匯出的那個sql指令碼檔案。
mysql -h192.168.0.3 -unikey -p123456 -p3369 databasename tablename < d:/data.sql2.2.2 source匯入
source匯入不同於前面,它是乙個sql命令,必須登入進入mysql在命令列那裡才可以執行,而mysqldump實則是乙個管理工具,無須登入mysq在命令列那裡執行,只須在dos下執行即可。回到上面例子所處的dos介面,我們可以用下面的命令來登入mysql:
mysql -h [-p] -u -p舉例,我們登入乙個遠端mysql可以用下面的命令:
mysql -h192.168.0.3 -unikey -p123456登入之後,進入我們要作用的資料庫:
mysql > use neem_hanyang;然後我們可以使用source命令來執行前面匯出的sql指令碼實現資料的匯入:
mysql > source d:/jabil.sql;2.2.3 二者對比
mysqldump雖然好用,但它實際上也是運用先登入在執行指令碼的策略,只是其中的細節我們無需關心,但是,因為其中有很多遠端連線細節,我們有可能遭遇中文亂碼問題。
關於為何在使用mysqldump做匯入時會出現中文亂碼問題,我們先用mysql命令登入,然後
輸入下面的命令:
是否注意到紅圈部分的編碼是latin1?latin1是mysql的預設字符集,可能由於某種原因你沒有指定預設編碼,它就會預設為latin1了,這就是你中文亂碼出現的原因。
所以筆者個人建議,如果是作資料匯入的話,寧可多做乙個步驟,先登入後使用source命令來匯入。
在dos下使用mysqldump --help的命令我們可以看到mysqldump更多更詳細的使用方法,下面挑幾個命令進行講解。
例如--opt命令的使用,預設情況下--opt是會被呼叫:
mysqldump -h192.168.0.3 -unikey -p123456 --default-character-set=utf8 --opt neem_jabil commerr_h > d:/jabil3.sqlwhere命令的原理其實就是sql的where條件限定,格式規範是:--where="字段條件",如:--where="id>1",需要注意的是id這個字段必須是真實存在的,否則會報sql錯誤如下。
具體的--where**例子如下:
mysqldump -h192.168.0.3 -unikey -p123456 --default-character-set=utf8 --where="errtype>0" neem_jabil commerr_h > d:/jabil3.sql顧名思義,--no-data的作用就是只匯出表結構而不匯出資料,舉例如下:
mysqldump -h192.168.0.3 -unikey -p123456 --default-character-set=utf8 --no-data neem_jabil commerr_h > d:/jabil3.sql1. mysql匯入匯出工具mysqldump和source命令用法詳解
二、mysql本地匯入
1.匯出整個資料庫
mysqldump -u 使用者名稱 -p 資料庫名 > 匯出的檔名
2.匯出乙個表
mysqldump -u 使用者名稱 -p 資料庫名 表名》 匯出的檔名
3.匯出乙個資料庫結構
-d 沒有資料 --add-drop-table 在每個create語句之前增加乙個drop table
4.匯入資料庫
常用source 命令
進入mysql資料庫控制台,
如mysql -u root -p
mysql>use 資料庫
然後使用source命令,後面引數為指令碼檔案(如這裡用到的.sql)
mysql>source d:wcnc_db.sql
匯出匯入MySql資料
一 匯出資料庫 進入命令列,轉到mysql的安裝目錄的bin資料夾下 輸入下面的命令 1.匯出整個資料庫 mysqldump u 使用者名稱 p 資料庫名 匯出的檔名 mysqldump u root p db db.sql 然後要求你輸入密碼,輸入正確後便可以在該資料夾下找到db.sql檔案 二 ...
mysql資料匯入匯出
1.匯出資料 mysqldump 資料庫名 資料庫備份名 mysqldump a u使用者名稱 p密碼 資料庫名 資料庫備份名 mysqldump d a add drop table uroot p sql a.匯出結構不匯出資料 mysqldump opt d databases u root ...
MySQL資料匯出匯入
匯出整個資料庫結構和資料 mysqldump h localhost uroot p123456 database dump.sql 匯出單個資料表結構和資料 mysqldump h localhost uroot p123456 database table dump.sql 匯出整個資料庫結構 ...