Mysql中文亂碼以及導(dǎo)出為sql語(yǔ)句和Excel問(wèn)題解決方法[圖文]_MySQL教程
推薦:關(guān)于Mysql查詢帶單引號(hào)及插入帶單引號(hào)字符串問(wèn)題本文主要介紹的是用mysql_real_escape_string對(duì)用戶提交的表單數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理和通過(guò)addslashes以及mysql_escape_string這3個(gè)類似功能的函數(shù)用法區(qū)別
一、導(dǎo)出數(shù)據(jù)。先說(shuō)明一下自己的環(huán)境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47。
我想把本機(jī)數(shù)據(jù)庫(kù)內(nèi)的數(shù)據(jù)遷移到另一臺(tái)機(jī)器上,于是使用Workbench中自帶的import/export功能,其實(shí)就是調(diào)用mysqldump。不幸的是,出現(xiàn)了版本不一致的錯(cuò)誤。




錯(cuò)誤沒(méi)治了,最終找到解決方案,可以指定mysql的mysqldump,路徑為:/usr/local/mysql/bin/mysqldump,這樣是把數(shù)據(jù)導(dǎo)出為sql語(yǔ)句的insert語(yǔ)句。
由于需要是把數(shù)據(jù)導(dǎo)出為excel,所以通過(guò)mysql控制臺(tái)使用select語(yǔ)句把數(shù)據(jù)導(dǎo)出到excel文件中。
下面先介紹怎么導(dǎo)出為excel文件,然后介紹怎么導(dǎo)出為insert語(yǔ)句。
1、通過(guò)終端操作。
1 cd /usr/local/mysql/bin/2、到達(dá)bin目錄后,可以ls -l命令看看當(dāng)前目錄有哪些程序可以用,這里先用mysql,命令格式為:
mysql -h主機(jī)IP -u用戶名 -p密碼
如:
1 ./mysql -hlocalhost -uroot -p123456注意前面加的"./"。
這時(shí)就進(jìn)入mysql命令控制臺(tái),終端上顯示為:
3、然后通過(guò)show databases命令查看當(dāng)前的所有數(shù)據(jù)庫(kù),使用use命令選擇進(jìn)入某個(gè)數(shù)據(jù)庫(kù),注意每個(gè)命令都要以英文分號(hào)“;”結(jié)束。
4、使用sql語(yǔ)句導(dǎo)出需要的數(shù)據(jù),sql語(yǔ)句不限于單個(gè)表的查詢。由于我的數(shù)據(jù)庫(kù)編碼是utf8格式,而office默認(rèn)的編碼則是gb2312,所以當(dāng)某個(gè)字段中包含中文時(shí),導(dǎo)出到excel后,中文內(nèi)容是會(huì)亂碼的,此時(shí)需要convert轉(zhuǎn)換編碼,具體使用方式:
我試著把文件保存到桌面,但始終提示沒(méi)有權(quán)限,應(yīng)該是和用戶有關(guān)吧,無(wú)視了。當(dāng)使用“./”這個(gè)路徑保存時(shí),實(shí)際是保存到了/usr/local/mysql/data下面。打開(kāi)看看,喲西,不亂碼了。
5、下面是把數(shù)據(jù)導(dǎo)出為sql的insert語(yǔ)句。
使用mysqldump命令,可以指定是單個(gè)表還是整個(gè)數(shù)據(jù)庫(kù)導(dǎo)出。
打開(kāi)終端,定位到/usr/local/mysql/bin,使用這個(gè)目錄下的mysqldump。
導(dǎo)出單個(gè)表:
命令格式為:
mysqldump -u用戶名 -p密碼 -h主機(jī)地址 數(shù)據(jù)庫(kù)名 表名 > 導(dǎo)出文件存儲(chǔ)路徑
例如:
/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB Catalog > /Users/ethan/Desktop/Catalog.sql其中用到了幾個(gè)參數(shù),簡(jiǎn)單說(shuō)明一下:
-t:等同于--no-create-info,只導(dǎo)出數(shù)據(jù),而不添加CREATE TABLE 語(yǔ)句。默認(rèn)導(dǎo)出的文件中也有create table語(yǔ)句。
--extended-insert:使用具有多個(gè)VALUES列的INSERT語(yǔ)法,也就是傳說(shuō)中一次插入多條數(shù)據(jù)的INSERT句式。這樣使導(dǎo)出文件更小,并加速導(dǎo)入時(shí)的速度,但是有可能sql語(yǔ)句會(huì)有長(zhǎng)度限制,所以我并不推薦此種方式,比如我某個(gè)表中有500W條數(shù)據(jù),難保能用一條insert語(yǔ)句可以執(zhí)行完畢。此選項(xiàng)默認(rèn)為打開(kāi)狀態(tài),把他置為false,就是一條數(shù)據(jù)一個(gè)insert語(yǔ)句了。
--default-character-set:設(shè)置默認(rèn)字符集,由于我的數(shù)據(jù)庫(kù)和表均是設(shè)定為utf8編碼格式,當(dāng)不設(shè)置此選項(xiàng)時(shí),導(dǎo)出的中文是亂碼,奇怪的是官方說(shuō)明中,說(shuō)這個(gè)選項(xiàng)的默認(rèn)值是utf8,表示不解。
導(dǎo)出整個(gè)數(shù)據(jù)庫(kù):
/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)入,這里說(shuō)明一下如何使用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寫(xiě)入中文亂碼。
關(guān)于這個(gè)中文亂碼問(wèn)題,著實(shí)折騰了我好久好久。一開(kāi)始就百度谷歌bing,網(wǎng)上大多復(fù)制粘貼的答案,在這里記錄一下自己的情況,希望同路人不再走彎路。
其實(shí)我的修改很簡(jiǎn)單,把數(shù)據(jù)庫(kù)的編碼改為utf-8,在新建表時(shí),把表的默認(rèn)編碼也改為utf-8,就可以了。就這么個(gè)小小的改動(dòng),讓我足足折騰了一個(gè)通宵,表示有解決問(wèn)題強(qiáng)迫癥,問(wèn)題不解決真的睡不著,唉~~~
四、總結(jié)。
似乎很多領(lǐng)導(dǎo)做報(bào)告都喜歡加個(gè)總結(jié),說(shuō)上一堆廢話,雖然回回都聽(tīng)不懂,但感覺(jué)很厲害的樣子。于是我也加一個(gè)總結(jié):中文亂碼真特么折騰人,這些年跟你斗爭(zhēng)了好多回了,好了,總結(jié)完畢。
分享:mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法mysql解決遠(yuǎn)程不能訪問(wèn)的二種方法,需要的朋友可以參考一下
- MSSQL清空日志刪除日志文件
- 關(guān)于數(shù)據(jù)庫(kù)中保留小數(shù)位的問(wèn)題
- 解析mysql與Oracle update的區(qū)別
- mysql 導(dǎo)入導(dǎo)出數(shù)據(jù)庫(kù)以及函數(shù)、存儲(chǔ)過(guò)程的介紹
- MySQL——修改root密碼的4種方法(以windows為例)
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問(wèn)題
- 深入理解SQL的四種連接-左外連接、右外連接、內(nèi)連接、全連接
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql出現(xiàn)“Incorrect key file for table”處理方法
- mysql重裝后出現(xiàn)亂碼設(shè)置為utf8可解決
- 淺析一個(gè)MYSQL語(yǔ)法(在查詢中使用count)的兼容性問(wèn)題
- 解析MySQL中INSERT INTO SELECT的使用
MySQL教程Rss訂閱編程教程搜索
MySQL教程推薦
- 總結(jié)MySQL建表、查詢優(yōu)化的一些實(shí)用小技巧
- 基于MYSQL中優(yōu)化的一些方法
- 網(wǎng)站模板MySQL timestamp自動(dòng)更新時(shí)間
- MySQL筆記之連接查詢?cè)斀?/a>
- 如何用cmd連接Mysql數(shù)據(jù)庫(kù)
- 網(wǎng)站模板:SQL2005CLR函數(shù)擴(kuò)展 - 關(guān)于山寨索引
- 設(shè)置mysql的sql_mode
- 通過(guò)mysqladmin遠(yuǎn)程管理mysql的方法
- 如何用workbench導(dǎo)出mysql數(shù)據(jù)庫(kù)關(guān)系圖
- MYSQL 事件高度器
猜你也喜歡看這些
- sql server 2008安裝過(guò)程中服務(wù)器配置出錯(cuò)解決辦法
- Sql學(xué)習(xí)第三天——SQL 關(guān)于with ties介紹
- 關(guān)于SQL Server 2008中報(bào)表服務(wù)的詳解
- SQL Server 2005中更改sa的用戶名的方法
- SQL SERVER應(yīng)用問(wèn)題解答13例(二)
- 解答SQL Server日志文件損壞嚴(yán)重的問(wèn)題
- 解答使用SQL Server數(shù)據(jù)庫(kù)查詢累計(jì)值的方法
- 解讀SQL Server的BUILTIN\Administrators用戶
- 揭秘SQL Sever中各種語(yǔ)句的完整語(yǔ)法
- SQL SERVER 2008 CTE生成結(jié)點(diǎn)的FullPath
- 相關(guān)鏈接:
復(fù)制本頁(yè)鏈接| 搜索Mysql中文亂碼以及導(dǎo)出為sql語(yǔ)句和Excel問(wèn)題解決方法[圖文]
- 教程說(shuō)明:
MySQL教程-Mysql中文亂碼以及導(dǎo)出為sql語(yǔ)句和Excel問(wèn)題解決方法[圖文]
。





