日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件下載最安全的下載網(wǎng)站、值得信賴的軟件下載站!

      首頁西西教程其它教程 → Mysql中文亂碼 導(dǎo)出為sql語句 Excel問題解決方法

      Mysql中文亂碼 導(dǎo)出為sql語句 Excel問題解決方法

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時(shí)間:2013/3/23 10:26:21字體大。A-A+

      作者:西西小熊點(diǎn)擊:0次評論:6次標(biāo)簽: Mysql

      • 類型:數(shù)據(jù)庫類大小:1.7M語言:英文 評分:6.6
      • 標(biāo)簽:
      立即下載

      這幾天基于Heritrix寫了一個(gè)爬蟲,用到mysql,在導(dǎo)入導(dǎo)出數(shù)據(jù)時(shí),遇到一些亂碼問題,好不容易解決了,記錄一下,以備查看。

      一、導(dǎo)出數(shù)據(jù)。

      先說明一下自己的環(huán)境:Mac OS X 10.8.3, MySQL Community Server 5.6.10, MySQL Workbench 5.2.47。

      我想把本機(jī)數(shù)據(jù)庫內(nèi)的數(shù)據(jù)遷移到另一臺機(jī)器上,于是使用Workbench中自帶的import/export功能,其實(shí)就是調(diào)用mysqldump。不幸的是,出現(xiàn)了版本不一致的錯(cuò)誤。

      錯(cuò)誤沒治了,最終找到解決方案,可以指定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、到達(dá)bin目錄后,可以ls -l命令看看當(dāng)前目錄有哪些程序可以用,這里先用mysql,命令格式為:

      mysql -h主機(jī)IP -u用戶名 -p密碼

      如:1 ./mysql -hlocalhost -uroot -p123456

      注意前面加的"./"。

      這時(shí)就進(jìn)入mysql命令控制臺,終端上顯示為:

      3、然后通過show databases命令查看當(dāng)前的所有數(shù)據(jù)庫,使用use命令選擇進(jìn)入某個(gè)數(shù)據(jù)庫,注意每個(gè)命令都要以英文分號“;”結(jié)束。

      4、使用sql語句導(dǎo)出需要的數(shù)據(jù),sql語句不限于單個(gè)表的查詢。由于我的數(shù)據(jù)庫編碼是utf8格式,而office默認(rèn)的編碼則是gb2312,所以當(dāng)某個(gè)字段中包含中文時(shí),導(dǎo)出到excel后,中文內(nèi)容是會亂碼的,此時(shí)需要convert轉(zhuǎn)換編碼,具體使用方式:

      我試著把文件保存到桌面,但始終提示沒有權(quán)限,應(yīng)該是和用戶有關(guān)吧,無視了。當(dāng)使用“./”這個(gè)路徑保存時(shí),實(shí)際是保存到了/usr/local/mysql/data下面。打開看看,喲西,不亂碼了。

      5、下面是把數(shù)據(jù)導(dǎo)出為sql的insert語句。

      使用mysqldump命令,可以指定是單個(gè)表還是整個(gè)數(shù)據(jù)庫導(dǎo)出。

      打開終端,定位到/usr/local/mysql/bin,使用這個(gè)目錄下的mysqldump。

      導(dǎo)出單個(gè)表:

      命令格式為:

      mysqldump -u用戶名 -p密碼 -h主機(jī)地址 數(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

      其中用到了幾個(gè)參數(shù),簡單說明一下:

      -t:等同于--no-create-info,只導(dǎo)出數(shù)據(jù),而不添加CREATE TABLE 語句。默認(rèn)導(dǎo)出的文件中也有create table語句。

      --extended-insert:使用具有多個(gè)VALUES列的INSERT語法,也就是傳說中一次插入多條數(shù)據(jù)的INSERT句式。這樣使導(dǎo)出文件更小,并加速導(dǎo)入時(shí)的速度,但是有可能sql語句會有長度限制,所以我并不推薦此種方式,比如我某個(gè)表中有500W條數(shù)據(jù),難保能用一條insert語句可以執(zhí)行完畢。此選項(xiàng)默認(rèn)為打開狀態(tài),把他置為false,就是一條數(shù)據(jù)一個(gè)insert語句了。

      --default-character-set:設(shè)置默認(rèn)字符集,由于我的數(shù)據(jù)庫和表均是設(shè)定為utf8編碼格式,當(dāng)不設(shè)置此選項(xiàng)時(shí),導(dǎo)出的中文是亂碼,奇怪的是官方說明中,說這個(gè)選項(xiàng)的默認(rèn)值是utf8,表示不解。

      導(dǎo)出整個(gè)數(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)于這個(gè)中文亂碼問題,著實(shí)折騰了我好久好久。一開始就百度谷歌bing,網(wǎng)上大多復(fù)制粘貼的答案,在這里記錄一下自己的情況,希望同路人不再走彎路。

      其實(shí)我的修改很簡單,把數(shù)據(jù)庫的編碼改為utf-8,在新建表時(shí),把表的默認(rèn)編碼也改為utf-8,就可以了。就這么個(gè)小小的改動,讓我足足折騰了一個(gè)通宵,表示有解決問題強(qiáng)迫癥,問題不解決真的睡不著,唉~~~

      四、總結(jié)。

      似乎很多領(lǐng)導(dǎo)做報(bào)告都喜歡加個(gè)總結(jié),說上一堆廢話,雖然回回都聽不懂,但感覺很厲害的樣子。于是我也加一個(gè)總結(jié):中文亂碼真特么折騰人,這些年跟你斗爭了好多回了,好了,總結(jié)完畢。

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價(jià)!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(6)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)