Mysql匯出匯入亂碼問題解決

2022-02-20 22:12:17 字數 3095 閱讀 2579

mysql從4.1版本開始才提出字符集的概念,所以對於mysql4.0及其以下的版本,他們的字符集都是latin1的,所以有時候需要對mysql的字符集進行一下轉換,mysql版本的公升級、降級,特別是公升級mysql的版本,為了不讓程式繼續沿用latin1字符集之後對以後discuz!版本公升級的影響和安裝supesite,這就需要我們進行字符集的轉換!

本人轉換過好多資料了,也用過了好多的辦法,個人感覺最好用的就是使用mysql命令匯出匯入中將字符集轉換過去!

由於字符集比較多,現在主要舉gbk和latin1這兩種字符集之間的轉換!

這樣就輕鬆的將資料從mysql資料庫中匯出了,此時匯出的檔案在與mysql命令同級的目錄下,即bin目錄下,而且已經將mysql字符集匯出為latin1的了!現在要做的就是將資料匯入mysql4.0中去!

同樣在4.0版本的mysql命令提示符下(linux系統為mysql的命令目錄下),輸入下面匯入命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

這樣就將字符集從gbk轉為latin1同時將mysql從4.1以上版本的轉為mysql4.0的了!

現在講解一下如何從latin1字符集轉換為gbk的!

由於只有mysql4.1以上的版本才有字符集的概念,所以如果你要將mysql4.0的字符集從latin1轉換為gbk字符集的話,必須匯入到mysql4.1以上的版本中,然後再匯出!這裡面就多了乙個匯出為latin1的步驟!

同樣在mysql4.0的命令提示符下,輸入下面匯出的命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql

然後匯入到mysql4.1中,輸入下面匯入的命令:

mysql -uroot -p --default-character-set=latin1 -f discuz

然後在mysql4.1下轉換字符集,執行下列匯出命令:

mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql

然後執行匯入命令:

mysql -uroot -p --default-character-set=gbk -f newdiscuz

如果不出問題的話,那麼轉換就完畢了!其實整個過程還是比較簡單的,只是過程看起來比較麻煩些,但是過程卻是很簡單明瞭的!

下面舉出乙個在匯入過程中極易容易出現的問題!

在匯入的時候容易出現unknown command '/'這樣的錯誤,其實這是由於mysql在匯出的時候,它有時候給一些繁體字後面自動加上了個反斜槓造成的!解決此問題的辦法就是開啟備份的sql(這裡為discuz.sql),提示錯誤的時候會提示具體哪行出現了錯誤,找到那行,把反斜槓去掉就行了!其實你可以用ultraedit這些文字處理的工具,批量的去處理這些反斜槓

!憑個人經驗,有很多使用者名稱取的比較怪,這樣就容易出現反斜槓,這樣只要糾正那些使用者名稱就行了!

以上是個人在轉換資料過程中的一些經驗之談,很多地方還有待大家完善!

【知識補充】

就是mysql自帶的工具mysqldump,這個工具十分強大,可以匯出資料,並且可以匯出不同版本的資料、也可以匯出用於其他資料庫的資料. 這個工具在命令列、cmd下用的,如果你的msyql/bin目錄沒有配置在系統的環境變數裡,需要先cd到mysql的bin目錄.

基本匯出

mysqldump -u 資料庫使用者名稱 -p 資料庫名稱 [表名] > 匯出到檔案的路徑名

例如:匯出test_db這個資料庫,資料庫使用者為root沒有密碼(沒有密碼就不用加 -p 了):

mysqldump -u root test_db > c:/test.sql這樣就可以到處test這個資料庫了

如果我要匯出 test 資料庫中的user 錶用 ajin 這個使用者 密碼是 123

mysqldump -u 使用者名稱 -p密碼 test_db user >c:/test_user_table.sql

回車後提示輸入密碼就可以了

在匯出過程中改變資料庫預設的字符集

例如:我要匯出 test_db 這個資料庫 轉換編碼為 utf8

mysqldump -u 使用者名稱 -p密碼 --default-character-set=utf8 test_db >c:/test.sql

轉換成其他字元只需替換 utf8 就可以了

匯出不同版本資料或者匯出給資料庫用的資料

例如:我的資料庫 mysql 4.1 的 我要匯出乙個 預設字符集 utf8 的 4.0版本的資料

mysqldump -u 使用者名稱 -p密碼 test_db --compatible=mysql40 --default-character-set=utf8 test > c:/test.sql

就可完成了所謂的降級 --compatible= 可以跟得引數有 mysql323 mysql40 oracle mssql db2 等等.

匯出整個資料庫

匯出乙個表

匯出乙個資料庫結構

匯入

mysql -u 使用者名稱 -p密碼  接收資料的資料庫名 < 要匯入的檔案路徑

例如:我要匯入 test.sql 這個資料到discuz_db這個資料庫

mysql -u 使用者名稱 -p密碼 discuz_db匯入資料庫

常用source 命令,進入mysql資料庫控制台,

如mysql -u root -p

mysql>use 某個資料庫的名字

然後使用source命令,後面引數為指令碼檔案(如這裡用到的.sql)

mysql>source wcnc_db.sql

原文:

MySql 亂碼問題解決

最近連線mysql資料庫的時候,我也遇到了中文亂碼問題 呵呵,很頭疼哦!我用的資料庫是mysql5.0,所以,我先用google,baidu等上網搜了一下解決方案,自己也按著方法反覆測試了一下午,終於解決了我的jsp mysql5.0 tomcat 5.0.29出現的亂碼問題。解決方案如下 1 在d...

MySql遇到亂碼問題解決。

情況 使用myeclipse db browser 執行乙個sql檔案,結果頁面亂碼。解決方法,設定1 db browser的connection url設定為 jdbc mysql 2 mysql根目錄下的my.ini檔案 default character set設定為default chara...

MySQL中文亂碼問題解決

mysql 4.1及以後的版本開始支援多語言,這個所謂的多語言,就是在輸入輸出時mysql會替你做編碼轉換。而這個轉換規則就是由客戶端編碼和伺服器端編碼來決定的。編碼轉換的規則就是 在輸入資料時將編碼由 客戶端編碼 轉換為 伺服器端編碼 輸出時將資料由 伺服器端編碼 轉換為 客戶端編碼 mysql ...