iT邦幫忙

0

千萬筆資料匯入mysql

想請問各位前輩,
我已經更改php.ini裡面設定

要上傳有千萬筆資料的csv檔上去phpmyadmin
一定要先建立資料庫欄位嗎?
還是會讀取第一欄呢?

但我傳上去什麼失敗原因都沒有,
請問還有更好的辦法嗎?

目前我僅先以150萬筆資料為測試 檔案大概480M

還有傳至記憶體用盡的問題這樣的話該如何修正
還是一樣更改php.ini嗎

外獅佬 iT邦大師 1 級 ‧ 2015-06-17 22:34:00 檢舉
你期待MySQL會自己解析csv(格式化的文字檔),然後自動幫你建好資料表的結構?!
有這個功能跟我說偷笑

1 個回答

14
wiseguy
iT邦超人 1 級 ‧ 2015-06-17 22:44:25
最佳解答

資料這麼多筆,就別用 web 了,web 會 timeout、傳上去由 php 處理也會 timeout,更會耗盡記憶體。你會忙不完。
請直接透過 ssh 登入系統,再用 FTP 或 SFTP 上傳你的 CSV,執行 mysql 裡的 mysqlimport 來做匯入,或是執行 mysql 以 LOAD DATA INFILE 方式匯入。請參考
http://www.codedata.com.tw/database/mysql-tutorial-19-outfile-dump-infile-import/
匯入之前,當然要先開好 Database 跟 Table。

看更多先前的回應...收起先前的回應...
jhu0717 iT邦新手 5 級 ‧ 2015-06-18 00:35:35 檢舉

但我只在本機使用呢?

外獅佬 iT邦大師 1 級 ‧ 2015-06-18 00:39:18 檢舉

本不本機...對web server來說都一樣
都是remote

wiseguy iT邦超人 1 級 ‧ 2015-06-18 10:17:07 檢舉

jhu0717提到:
只在本機使用呢?

那連登入都不用,直接執行 mysql 或 mysqlimport 不是嗎?

wiseguy iT邦超人 1 級 ‧ 2015-06-18 10:20:20 檢舉

jhu0717提到:
可是亂碼該如何解決呢?

請先確任你開的 table 語系與 csv 檔的語系是一致的。比如一樣是 big5 或 utf-8。然後在執行 mysql 或 mysqlimport 時,加上參數 --default-character-set=binary 即可。

wiselou提到:
畚不畚箕

偷笑毆飛

我要發表回答

立即登入回答