最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql中文亂碼以及導出為sql語句和Excel問題解決方法[圖文]

 更新時間:2013年04月01日 14:16:14   作者:  
這幾天基于Heritrix寫了一個爬蟲,用到mysql,在導入導出數(shù)據(jù)時,遇到一些亂碼問題,好不容易解決了,記錄一下,以備查看

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

先說明一下自己的環(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ù)導出為sql語句的insert語句。

由于需要是把數(shù)據(jù)導出為excel,所以通過mysql控制臺使用select語句把數(shù)據(jù)導出到excel文件中。

下面先介紹怎么導出為excel文件,然后介紹怎么導出為insert語句。

1、通過終端操作。

1 cd /usr/local/mysql/bin/

2、到達bin目錄后,可以ls -l命令看看當前目錄有哪些程序可以用,這里先用mysql,命令格式為:

mysql -h主機IP -u用戶名 -p密碼

如:

1 ./mysql -hlocalhost -uroot -p123456

注意前面加的"./"。

這時就進入mysql命令控制臺,終端上顯示為:

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

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

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

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

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

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

導出單個表:

命令格式為:

mysqldump -u用戶名 -p密碼 -h主機地址 數(shù)據(jù)庫名 表名 > 導出文件存儲路徑

例如:

/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,只導出數(shù)據(jù),而不添加CREATE TABLE 語句。默認導出的文件中也有create table語句。

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

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

導出整個數(shù)據(jù)庫:

/usr/local/mysql/bin/mysqldump -uroot -p123456 -hlocalhost -t --extended-insert=false --default-character-set=utf8 SpiderBBSDB > /Users/ethan/Desktop/SpiderBBSDB.sql

二、導入數(shù)據(jù)。

有導出就有導入。上面第5步導出的sql文件,可以直接在mysql workbench中執(zhí)行,也可以使用mysqldump導入,這里說明一下如何使用mysqldump導入:

/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)導做報告都喜歡加個總結(jié),說上一堆廢話,雖然回回都聽不懂,但感覺很厲害的樣子。于是我也加一個總結(jié):中文亂碼真特么折騰人,這些年跟你斗爭了好多回了,好了,總結(jié)完畢。

相關(guān)文章

  • mysql通過my.cnf修改默認字符集為utf-8的方法和注意事項

    mysql通過my.cnf修改默認字符集為utf-8的方法和注意事項

    本文主要給大家介紹mysql通過my.cnf修改默認字符集為utf-8的方法,當然你也可以設(shè)置成別的,國際點還是utf-8好,以及在修改過程中要注意的一些事項,有需要的朋友們可以參考借鑒。
    2016-09-09
  • sql server自動編號的三種方法

    sql server自動編號的三種方法

    自增列是最簡單和常見的方法,適用于大多數(shù)情況,本文介紹了SQL Server中三種常見的自動編號方法:自增列、序列和觸發(fā)器,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 使用YUM在Linux(CentOS 7)下安裝mysql 5.7.18的教程詳解

    使用YUM在Linux(CentOS 7)下安裝mysql 5.7.18的教程詳解

    這篇文章主要介紹了使用YUM在Linux(CentOS 7)下安裝mysql 5.7.18的教程詳解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-05-05
  • 讀取mysql一個庫下面的所有的表table

    讀取mysql一個庫下面的所有的表table

    本文給大家分享的是如何使用php實現(xiàn)讀取mysql一個庫下面的所有的表table的代碼,有需要的小伙伴可以參考下
    2016-12-12
  • 為什么在MySQL中不建議使用UTF-8

    為什么在MySQL中不建議使用UTF-8

    在本篇文章里小編給大家分享了一篇關(guān)于MySQL中不要使用UTF-8的相關(guān)文章,有興趣的朋友們可以閱讀參考下。
    2020-12-12
  • MySQL8.0 鎖等待排查的問題解決

    MySQL8.0 鎖等待排查的問題解決

    MySQL 5.7 一些鎖監(jiān)控表,在 8.0 都發(fā)生了變化,本文主要介紹了MySQL8.0如何排查鎖等待問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-10-10
  • Mac 將mysql路徑加入環(huán)境變量的方法

    Mac 將mysql路徑加入環(huán)境變量的方法

    這篇文章主要介紹了Mac如何將mysql路徑加入環(huán)境變量,有需要的朋友好按照下面的步驟操作即可
    2014-07-07
  • MySQL查詢重寫插件的使用

    MySQL查詢重寫插件的使用

    這篇文章主要介紹了MySQL查詢重寫插件的使用,幫助大家更好的理解和維護數(shù)據(jù)庫,感興趣的朋友可以了解下
    2020-11-11
  • 重裝mysql時3306端口被占用的解決方法

    重裝mysql時3306端口被占用的解決方法

    如果在安裝mysql中出現(xiàn)3306端口不能使用,已經(jīng)被占用的過程,則需要將該端口號的進程釋放即可,所以本文給大家介紹了重裝mysql時3306端口被占用的解決方法,需要的朋友可以參考下
    2024-02-02
  • MySQL深入淺出精講觸發(fā)器用法

    MySQL深入淺出精講觸發(fā)器用法

    觸發(fā)器是SQLserver提供給程序員和數(shù)據(jù)分析員來保證數(shù)據(jù)完整性的一種方法,它是與表事件相關(guān)的特殊的存儲過程,事件是在 MySQL 5.1后引入的,有點類似操作系統(tǒng)的計劃任務(wù),但是周期性任務(wù)是內(nèi)置在MySQL服務(wù)端執(zhí)行的
    2022-08-08

最新評論

晴隆县| 平原县| 宣化县| 师宗县| 绥中县| 京山县| 平舆县| 鹿泉市| 三明市| 凌云县| 荃湾区| 云梦县| 大港区| 三穗县| 泸水县| 吴忠市| 永城市| 建阳市| 江门市| 云阳县| 浦北县| 苍溪县| 贵州省| 汽车| 广西| 江永县| 潢川县| 安吉县| 霍林郭勒市| 柳江县| 抚松县| 襄樊市| 阿克苏市| 沙雅县| 诸城市| 阿拉尔市| 枣阳市| 友谊县| 洪湖市| 万源市| 海盐县|