mysql数据库latin1转utf8_三种转换Mysql数据库数据编码的窍门-latin1转utf8
背景:某個操作系統的Mysql數據庫數據庫Databnsednname采用默認的latin1字符集,操作系統升級需求將所有數據轉換成utf-8各式,目的數據庫Databnse為newdbname(建庫時應用utf8)
方法一:
步驟一 命令行執行:Mysql數據庫dump –opt -hlocalhost -uroot -p*** –default-character-set=lantin1 dbname > /usr/local/dbname.sql
步驟二 將 dbname.sql文檔中的create table語句的CHARSET=latin1改為CHARSET=utf8
步驟三 在dbname.sql文檔中的insert語句之前加一條’set names utf8;’
步驟四將dbname.sql轉碼為utf-8各式,意見應用UltraEditor,能夠直接應用該編輯器的’轉換->ASCII到UTF- 8(Unicode編輯)’,或者將文檔另存為UTF-8(無BOM)各式
步驟五 命令行執行:Mysql數據庫 -hlocalhost -uroot -p*** –default-character-set=utf8 new_dbname < /usr/local/dbname.sql
總結:這種竅門有個致命之處就當數據中有大量漢文字符和更多有聯系特殊符號字符時,很有估計導致在 [步驟五]時報錯導致無法正常導入數據,假如數據庫Databnse較量大能夠分別對每張表執行上述步驟
方法二(推薦大部份人應用):
為 了解決NO·1種竅門中總結時說到的疑難問題,在網上苦苦查找了一天資源才東拼西湊的搞出唯一較量穩妥的解決竅門
步驟一將待導出的數據表的表框架導出(能夠用Phpmyadmin、Mysql數據庫dump等,很簡單就不說了),然后將導出的create table語句的CHARSET=latin1改為CHARSET=utf8,在目的庫newdbname中執行該create table語句把表框架建好,接下來開端導出-導入數據
步驟二 命令行:進入Mysql數據庫命令行下,Mysql數據庫 -hlocalhost -uroot -p*** dbname
步驟三 執行SQL select * from tbname into outfile ‘/usr/local/tbname.sql’;
步驟四將tbname.sql轉碼為utf-8各式,意見應用UltraEditor,能夠直接應用該編輯器的’轉換->ASCII到UTF- 8(Unicode編輯)’,或者將文檔另存為UTF-8(無BOM)各式
步驟五 在Mysql數據庫命令行下執行語句 set character_set_database=utf8; 注:設置Mysql數據庫的環境變量,那樣Mysql數據庫在下一步讀取sql文檔時將以utf8的形式去解釋該文檔內容
步驟六 在Mysql數據庫命令行下執行語句 load data infile ‘tbname.sql’ into table newdbname.tbname;
留意:千萬不能忘了第四步
采用第二種竅門,所有數據均正常導入,且各式轉換勝利沒有亂碼
方法三:
別人的今天問起,隨手轉了一下,很簡單,這里截圖說明一下
用phpmyadmin導入庫test中后發現,這個庫中有UTF8和latin1兩種編碼,如下圖
先把test備份為test1庫,在WIN下操作的話就是把:路徑\MySQL\data下的test目錄備份一下,改名為test1目錄
在phpmyadmin中把所有為UTF8的表刪除,在命令行中運行
D:\PHPServer\MySQL\bin>mysqldump -uroot -p –quick –compatible=mysql40 –default-character-set=latin1 –extended-insert=FALSE?test > /root/test.sql
說明一下D:\PHPServer\MySQL\bin是我的安裝目錄,test為數據庫,d:/test.sql為生成的數據文件,程序會提示你輸入root的用戶密碼,輸入后,等幾分鐘,test.sql就生成好了
通過phpmyadmin建立一個新庫,庫名:test2 ,采集字符集設定為utf8-general-li
再將剛才生成sql文件導入新數據庫
D:\PHPServer\MySQL\bin>mysql -uroot -p –default-character-set=utf8?test2 < /root/test.sql
輸入root密碼,等幾分鐘,zxs.sql就導入成功了,到這還沒完,因為這里只是把latin1編碼的轉換為utf8了
最后,停止mysql,把test2目錄下的所有文件覆蓋到我們剛剛備份的test1目錄下,這樣,test1目錄就是我們要得到了轉換好了的UTF8數據庫了,OK,收工
當然,方法很簡單,就是把latin1編碼的表單獨分離出來轉為UTF8后再蓋原來的庫,這樣多種編碼也都可以完美的轉換,這種情況也非常常見,換主機,升mysql版本等都會出現這種情況的。
覺得文章有用?立即:
和朋友一起 共學習 共進步!
猜想失敗,您看看下面的文章有用嗎?
總結
以上是生活随笔為你收集整理的mysql数据库latin1转utf8_三种转换Mysql数据库数据编码的窍门-latin1转utf8的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: wpf加载上千张图片部分图片不显示_开源
- 下一篇: mysql 从物理文件恢复_从物理文件恢