討論區快速選單
知識庫快速選單
討論區最近新進100則主題 虛擬社群公民行為研究 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
我的MySQL將EXCEL(csv)檔匯入後, 中文變亂碼
更改我的閱讀文章字型大小
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/20 上午 10:41:14
大家好:
     最近我將 Access 資料庫download所有資料到EXCEL的 csv檔, 再以ADMIN的匯入功能將資料拋到MySQL, 資料筆數正確, 但中文皆變成亂碼, 不知是我的TABLE SCHEMA設計錯誤(我用UTP-8)? 還是其他原因.
     請各位高手抽空幫忙! 謝謝!
作者 : daisylh0514(麗達)討論區板主 mySQL優秀好手貼文超過200則
[ 貼文 409 | 人氣 146 | 評價 1710 | 評價/貼文 4.18 | 送出評價 3 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為很有道理 2006/1/20 上午 11:04:00
我先前嘗試也有此情況,如果用程式來寫就不會,也期待能找到直接有效的解決方法...
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/1/20 下午 04:05:59
要不要把資料表結構發出來看看啊!
這樣比較容易找問題吧!

不過…小弟認人可以在於資料表結構為 latin1 而資料庫預設為 utf8互相衝突所導致!
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/1/23 上午 09:15:05
假設你要匯入的資料庫名稱為db1, csv檔名為 test.csv
可以利用 mysql本身提供的mysql.exe(win)的管理介面,下達下列指令試試:

mysql -uroot --default-character-encoding=latin1 db1 <test.csv
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/23 下午 12:16:18
謝謝您抽空幫忙! 我再試看看! 謝謝!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/23 下午 07:46:26
您好:
    以下是我的 table schema, 有空再請您幫我看一下, 謝謝您!!
=================================================
欄位 型態 校對 屬性 Null 預設值 附加 執行
group_no int(11) 是 NULL auto_increment
group_name varchar(10) latin1_swedish_ci 是 NULL
date date 是 0000-00-00
comment varchar(50) latin1_swedish_ci 是 NULL
================================================
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/23 下午 07:48:39
您好:
     我的環境是windows XP, 不能執行這樣的指令, 不知道是怎麼回事? 有空請幫忙! 謝謝!
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/1/24 上午 07:43:50
無法執行可能是沒有切換至 mysql 這支程式的所在目錄。
若你是用套件安裝(如:appserv或easyphp),請切換至mysql的所在資料夾,例:以appserv為例,其mysql的執行程式路徑為 c:\appserv\mysql\bin,若你是用mysql獨立安裝,應該會在 c:\mysql\bin 底下,這個目錄名稱可能會稍有差異,仔細找一下應該會發現。再不行,就利用 windows 本身的【搜尋】功能,找mysql.exe這支程式吧!

作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/24 下午 02:07:06
謝謝您的鼎力協助, 我再找時間測看看, 謝謝!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/24 下午 09:27:08
您好:
     以下是我執行的結果:
H:\AppServ\mysql\bin>mysql -uroot --default-character-encoding=latin1 big_group
<I:\My Documents\big_group.csv
系統找不到指定的檔案。

H:\AppServ\mysql\bin>

不知道問題出在哪?? 有空再請你幫忙, 謝謝!!
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/1/25 上午 07:23:51
因為windows 的DOS模式,不允許路徑有空白字元,所以你得將csv檔案複製至其他資料夾,或者用雙引號將它包起來,例:
H:\AppServ\mysql\bin\mysql -uroot --default-character-encoding=latin1 big_group <"I:\My Documents\big_group.csv"

祝好運!

>您好:
> 以下是我執行的結果:
>H:\AppServ\mysql\bin>mysql -uroot --default-character-encoding=latin1 big_group
><I:\My Documents\big_group.csv
>系統找不到指定的檔案。
>
>H:\AppServ\mysql\bin>
>
>不知道問題出在哪?? 有空再請你幫忙, 謝謝!!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/25 下午 07:15:08
您好:
     謝謝您的幫忙, 這次執行出現這以下的錯誤訊息, 不知是否是因為我的MySQL 或其他版本的問題(我的環境是
Apache Web Server Version 1.3.34

PHP Script Language Version 4.4.1

MySQL Database Version 5.0.16

phpMyAdmin Database Manager Version 2.5.7-pl1)

實在麻煩您到有點不好意思了! 有空再請您幫忙了, 先跟您拜個早年!! 敬祝新年快樂, 萬事如意, 發大財!!


H:\AppServ\mysql\bin>H:\AppServ\mysql\bin\mysql -uroot --default-character-encod
ing=latin1 big_group <"I:\My Documents\big_group.csv"
H:\AppServ\mysql\bin\mysql: unknown variable 'default-character-encoding=latin1'
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/1/25 下午 09:29:10
啊!好像是我的筆誤啊!
這實在不是小弟故意的,剛剛又檢查了一遍,發現
--default-character-encoding=latin1 是錯的,正確的應為
--default-character-set=latin1

ans兄,原諒我啦!


也因為這樣,mysql顯示的錯誤訊息為:
「unknown variable: …」

其實也是因為ANS兄這個問題,小弟才發現mysql這支程式竟有這麼多屬性可以用。

嗯!很多人說MySQL 4.1與 4.0以前不太相容,所以應該用4.0而不要用4.1之後的版本;小弟卻覺得自4.1之後才是mysql能登上臺面的版本。

mysql小弟還是只有剛入門,一些粗淺修為若不入達人之眼,還望勿怪!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/1/26 上午 10:10:41
JABAWORK兄:
    可別這麼說, 您的幫忙可說無微不至啦! 我覺得您可是各中高手啦! 謝謝您的幫忙, 有空我再試試!!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/3 下午 08:18:26
您好:
     先跟您拜個晚年, 敬祝新年新希望!
我再次嘗試您的方式, 得到答案如下, 還是有點問題, 可否再次請您幫忙? 謝謝!!

H:\AppServ\mysql\bin>H:\AppServ\mysql\bin\mysql -uroot home <"I:\My Documents\big_group.csv"
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
1,食,2003/5/31,
2,衣,,
3,住,,
4,行,,
5,育,,
6,樂,,
7,投資,,
8,醫藥,2003/5/11,
9,' at line 1
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為很有道理 2006/2/5 上午 10:12:21
嗯!不然你將csv檔案寄過來,順便把資料庫結構也附上,我來試試!
my email:
freelearn at gmail.com
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/5 下午 07:44:05
JABAWORK兄:
     csv檔及資料結構已經寄給您了! 有空再麻煩您了!
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/2/5 下午 11:54:31
唉!人老腦袋果然不太老使…
竟然牛頭對馬嘴,實在應該好好自我反省一番…
註:可不是故意賺積分的喔!

觀念一:
mysql 這支程式是連接mysql server 的client端程式,也可以利用轉向符號,來執行 sql script(create, insert)。

觀念二:將純文字檔匯入某個資料庫,可以利用 mysqlimport 這支程式,或是直接在 mysql 提示符號中,下達 「Load Data Infile 'file path' Into Table tbname....」 的指令來匯入純文字的資料檔案。

注意:雖然在mysql中可以指定資料庫和資料表的編碼不同,但是測試之後,在中文字的處理上還是建議同一資料庫中的資料表還是設定為一樣,才不會產生混淆;事實上,我自己測試的時候,db為utf8,而table指定 big5或latin1時,中文字都會變成亂碼…不知那裡操作錯誤…

結語:
所以,ans兄的問題應該利用觀念二的來匯入,而非觀念一,先前的討論浪費大家的寶貴時間,實在非常抱歉。
根據 ans 兄寄來的 csv 檔案 及資料庫結構,實地測試成功步驟如下(利用mysql 這支程式):
------------------------------------------------------------------------------------
SET NAMES 'latin1';
CREATE DATABASE home CHARSET=latin1;
USE home;
CREATE TABLE big_group(
  group_no int(11) auto_increment primary key,
  group_name varchar(10),
  date date,
  comment varchar(50)
) DEFAULT CHARSET=latin1;

LOAD DATA INFILE 'c:/big_group.csv' INTO TABLE big_group FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n';
----------------------------------------------------------------------------------

附註:
big_group.csv 置於 c: 根目錄之中,內容如下:
-------------------------------------------------------
1,食,2003/5/31,
2,衣,,
3,住,,
4,行,,
5,育,,
6,樂,,
7,投資,,
8,醫藥,2003/5/11,
9,日用品,2003/5/11,
10,薪資,2003/5/11,
11,婚喪喜慶,2003/5/11,
12,其他雜項,2003/5/11,
13,中華民國萬萬稅,2003/5/30,
14,荷蘭村,2003/10/15,
15,case,2004/5/18,
---------------------------------------------------------

作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/6 上午 10:00:23
JABAWORK兄:
     謝謝您長久以來的幫忙, 可別說是賺積分點數, 這對需要這方面資訊的我或其他有需要的同好, 可是相當重要的知識庫ㄚ! 非常感謝您的協助, 對我這MySQL的菜鳥可說是孜孜不倦了! 我會再抽空測試, 謝謝您!!
作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/7 上午 09:00:57
JABAWORK兄:
     我試成功了! 但我發現在DOS模式下進MySQL可以看到 table的內容是中文, 但我用MarcoMedia 寫個簡單的 PHP程式就無法SHOW出中文(還是亂碼), 這個問題我應該要在PHP的專用討論區寫才是, 但我想您可能會知道, 就請您再抽空幫我一下吧! 謝謝您!!
作者 : jabawork(jabawork)
[ 貼文 57 | 人氣 1246 | 評價 420 | 評價/貼文 7.37 | 送出評價 1 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人anfusheng註記此篇回應為最佳解答 2006/2/8 上午 06:50:34
哇!與君同喜啊!

至於macromedia會出現亂碼的原因…有沒有先想一下為啥會出現亂碼呢?
嗯!原因大概又是跟編碼有關…

這是我為啥建議大家用 utf8編碼的原因,除了可以避免出現big5不存在的繁體中文以外,也可以儲存 簡體、日、 韓語的文字。

如果沒有記錯,macromedia預設是利用 utf8編碼,所以結論就顯而易見了,excel 以 latin1 編碼,卻以utf8顯示,當然會有問題。

解決方式:
將php的網頁以 ascii(big5)儲檔,你可以利用 notepad, editplus或 pspad 開啟檔案後再以ascii方式儲檔。

註:macromedia應該也可以選擇預設的編碼方式,你可以找一下…

作者 : anfusheng(ans) 人氣指數超過10000點
[ 貼文 57 | 人氣 13617 | 評價 0 | 評價/貼文 0 | 送出評價 20 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2006/2/8 上午 10:39:50
JABAWORK兄:
     謝謝您長久以來的幫忙, 我想這個case該到了close的時候了! 謝謝您! 再來就是我本質學能的問題了! 千言萬語抵不上一句"感恩", 再次謝謝! 有空再聯絡!
 板主 : 麗達
 > mySQL - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - mySQL - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
mySQL
1 麗達 1240 
2 jabawork 400 
3 小朱 220 
4 Phoenix 200 
5 ench 140 
6 Aery 100 
7 jonathan321 90 
8 ozzy 70 
9 Aries 70 
10 Jasper 60 
mySQL
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2014 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125