Mysql中文亂碼以及導(dǎo)出為sql語句和Excel問題解決方法[圖文]
先說明一下自己的環(huán)境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47。
我想把本機數(shù)據(jù)庫內(nèi)的數(shù)據(jù)遷移到另一臺機器上,于是使用Workbench中自帶的import/export功能,其實就是調(diào)用mysqldump。不幸的是,出現(xiàn)了版本不一致的錯誤。
錯誤沒治了,最終找到解決方案,可以指定mysql的mysqldump,路徑為:/usr/local/mysql/bin/mysqldump,這樣是把數(shù)據(jù)導(dǎo)出為sql語句的insert語句。
由于需要是把數(shù)據(jù)導(dǎo)出為excel,所以通過mysql控制臺使用select語句把數(shù)據(jù)導(dǎo)出到excel文件中。
下面先介紹怎么導(dǎo)出為excel文件,然后介紹怎么導(dǎo)出為insert語句。
1、通過終端操作。
1 cd /usr/local/mysql/bin/2、到達bin目錄后,可以ls -l命令看看當(dāng)前目錄有哪些程序可以用,這里先用mysql,命令格式為:
mysql -h主機IP -u用戶名 -p密碼
如:
1 ./mysql -hlocalhost -uroot -p123456注意前面加的"./"。
這時就進入mysql命令控制臺,終端上顯示為:
3、然后通過show databases命令查看當(dāng)前的所有數(shù)據(jù)庫,使用use命令選擇進入某個數(shù)據(jù)庫,注意每個命令都要以英文分號“;”結(jié)束。
4、使用sql語句導(dǎo)出需要的數(shù)據(jù),sql語句不限于單個表的查詢。由于我的數(shù)據(jù)庫編碼是utf8格式,而office默認的編碼則是gb2312,所以當(dāng)某個字段中包含中文時,導(dǎo)出到excel后,中文內(nèi)容是會亂碼的,此時需要convert轉(zhuǎn)換編碼,具體使用方式:
我試著把文件保存到桌面,但始終提示沒有權(quán)限,應(yīng)該是和用戶有關(guān)吧,無視了。當(dāng)使用“./”這個路徑保存時,實際是保存到了/usr/local/mysql/data下面。打開看看,喲西,不亂碼了。
5、下面是把數(shù)據(jù)導(dǎo)出為sql的insert語句。
使用mysqldump命令,可以指定是單個表還是整個數(shù)據(jù)庫導(dǎo)出。
打開終端,定位到/usr/local/mysql/bin,使用這個目錄下的mysqldump。
導(dǎo)出單個表:
命令格式為:
mysqldump -u用戶名 -p密碼 -h主機地址 數(shù)據(jù)庫名 表名 > 導(dǎo)出文件存儲路徑
例如:
/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB Catalog > /Users/ethan/Desktop/Catalog.sql其中用到了幾個參數(shù),簡單說明一下:
-t:等同于--no-create-info,只導(dǎo)出數(shù)據(jù),而不添加CREATE TABLE 語句。默認導(dǎo)出的文件中也有create table語句。
--extended-insert:使用具有多個VALUES列的INSERT語法,也就是傳說中一次插入多條數(shù)據(jù)的INSERT句式。這樣使導(dǎo)出文件更小,并加速導(dǎo)入時的速度,但是有可能sql語句會有長度限制,所以我并不推薦此種方式,比如我某個表中有500W條數(shù)據(jù),難保能用一條insert語句可以執(zhí)行完畢。此選項默認為打開狀態(tài),把他置為false,就是一條數(shù)據(jù)一個insert語句了。
--default-character-set:設(shè)置默認字符集,由于我的數(shù)據(jù)庫和表均是設(shè)定為utf8編碼格式,當(dāng)不設(shè)置此選項時,導(dǎo)出的中文是亂碼,奇怪的是官方說明中,說這個選項的默認值是utf8,表示不解。
導(dǎo)出整個數(shù)據(jù)庫:
/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB > /Users/ethan/Desktop/SpiderBBSDB.sql二、導(dǎo)入數(shù)據(jù)。
有導(dǎo)出就有導(dǎo)入。上面第5步導(dǎo)出的sql文件,可以直接在mysql workbench中執(zhí)行,也可以使用mysqldump導(dǎo)入,這里說明一下如何使用mysqldump導(dǎo)入:
/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost --default-character-set=utf8 SpiderBBSDB < /Users/ethan/Desktop/Catalog.sql三、關(guān)于java連接mysql寫入中文亂碼。
關(guān)于這個中文亂碼問題,著實折騰了我好久好久。一開始就百度谷歌bing,網(wǎng)上大多復(fù)制粘貼的答案,在這里記錄一下自己的情況,希望同路人不再走彎路。
其實我的修改很簡單,把數(shù)據(jù)庫的編碼改為utf-8,在新建表時,把表的默認編碼也改為utf-8,就可以了。就這么個小小的改動,讓我足足折騰了一個通宵,表示有解決問題強迫癥,問題不解決真的睡不著,唉~~~
四、總結(jié)。
似乎很多領(lǐng)導(dǎo)做報告都喜歡加個總結(jié),說上一堆廢話,雖然回回都聽不懂,但感覺很厲害的樣子。于是我也加一個總結(jié):中文亂碼真特么折騰人,這些年跟你斗爭了好多回了,好了,總結(jié)完畢。
- 詳解 linux mysqldump 導(dǎo)出數(shù)據(jù)庫、數(shù)據(jù)、表結(jié)構(gòu)
- Navicat for MySQL導(dǎo)出表結(jié)構(gòu)腳本的簡單方法
- mysql mysqldump只導(dǎo)出表結(jié)構(gòu)或只導(dǎo)出數(shù)據(jù)的實現(xiàn)方法
- 淺談mysql導(dǎo)出表數(shù)據(jù)到excel關(guān)于datetime的格式問題
- python3實現(xiàn)mysql導(dǎo)出excel的方法
- MySQL實現(xiàn)導(dǎo)出excel的方法分析
- mysql 導(dǎo)出select語句結(jié)果到excel文件遇到問題及解決方法
- PHP導(dǎo)出MySQL數(shù)據(jù)到Excel文件(fputcsv)
- mysql如何將表結(jié)構(gòu)導(dǎo)出到excel
相關(guān)文章
MySQl數(shù)據(jù)庫必知必會sql語句(加強版)
本文給大家分享了一篇關(guān)于mysql數(shù)據(jù)庫必會sql語句加強版內(nèi)容,非常不錯,具有參考借鑒價值,需要的朋友參考下吧2017-04-04Navicat for Mysql 字段注釋中文亂碼問題及解決
這篇文章主要介紹了Navicat for Mysql 字段注釋中文亂碼問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09MySQL數(shù)據(jù)庫基于sysbench實現(xiàn)OLTP基準測試
這篇文章主要介紹了MySQL數(shù)據(jù)庫基于sysbench實現(xiàn)OLTP基準測試,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11MySql中表單輸入數(shù)據(jù)出現(xiàn)中文亂碼的解決方法
這篇文章主要介紹了MySql中表單輸入數(shù)據(jù)出現(xiàn)中文亂碼的解決方法的相關(guān)資料,需要的朋友可以參考下2016-07-07Mysql數(shù)據(jù)庫delete操作沒報錯卻刪除不了數(shù)據(jù)的解決
本文主要介紹了Mysql數(shù)據(jù)庫delete操作沒報錯卻刪除不了數(shù)據(jù)的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01Mysql在項目中相關(guān)使用方法指南(簡單操作數(shù)據(jù)庫)
作為一名編程人員,對MySQL一定不會陌生,尤其是互聯(lián)網(wǎng)行業(yè),對MySQL的使用是比較多的,下面這篇文章主要給大家介紹了關(guān)于Mysql在項目中相關(guān)使用方法的相關(guān)資料,主要是簡單操作數(shù)據(jù)庫,需要的朋友可以參考下2022-08-08python 連接數(shù)據(jù)庫mysql解壓版安裝配置及遇到問題
今天學(xué)習(xí)python連接數(shù)據(jù)庫,就想安裝一下mysql數(shù)據(jù)庫,沒想到小小的數(shù)據(jù)庫也遇到了不少挫折,所以我就把自己的安裝過程以及問題寫出來分享給大家,需要的朋友可以參考下2019-06-06