MySQL 導入大文本數(shù)據(jù)歷險記

背景

今天接到一個任務,往一張 mysql 數(shù)據(jù)庫表里導入一點文本數(shù)據(jù)培他,壓縮文件在百度云上遗座,一看 2 G 大小,百度云還各種限速途蒋,直接不想下載了,項目小姐姐問遇到啥問題懊烤?我更她說宽堆,下載困難腌紧,估計當時她哭笑不得畜隶,沒辦号胚,最終還是得開工浸遗,直接拿 u盤 copy 的。

問題

廢了幾分鐘才 copy 完杜漠,解壓后 13.9G察净,掛不得她們都不知道里面裝的是啥,然而難不倒我氢卡,linux 系統(tǒng)可謂是編程利器。

檢查 csv 文件行數(shù)

wc -l filename

半天沒跑出來峡捡,等不及筑悴,直接又上了另外一個命令

head -n filename
tail -n filename

看了一下時間跨度,最終選定最后一天的數(shù)據(jù)進行導入阁吝,那就得鎖定最后一天是從第幾行開始的,一路tail -n filename 試出來了的装盯,接下來就是把這部分數(shù)據(jù)截取到新文件

tail -n filename > new_file.csv

新文件只剩 1 個 G 了甲馋,突然想起還有字符編碼的問題,我數(shù)據(jù)庫用的是 utf-8定躏,而 windows 平臺的數(shù)據(jù)一般是 GBK 格式,一波百度后找到了 iconv 命令垮抗,一行命令就解決了拗引,速度賊快,以后媽媽再也不用擔心我的字符編碼問題了

iconv -f GBK -t UTF-8 input_file -o output_file

然而開始要上傳到服務器矾削,阿里云的服務器上傳數(shù)據(jù)也是需要一點時間豁护。突然想欲间,把文件切分一下吧,分批班缎,或者開幾個線程一起上傳她渴,又一波百度达址,發(fā)現(xiàn)了 split沉唠, 按行切分或者按大小切分

split -l 1000000 filename
split -C 100M filename

然后愉快的先上傳了一個小塊到了服務器苛败,打開 mysql,找到 load data 的命令罢屈,當然一開始不會那么成功,各種問題都會出現(xiàn)

  • 雙引號問題锄贷,默認會把雙引號當做字段內容填充鄙币,就導致非 字符類型的數(shù)據(jù)不能導入

  • 字符問題蹂随,utf-8 還要再重新指定十嘿,即使我的數(shù)據(jù)本來就是 utf-8

  • 字段對應問題岳锁,插入的表很多字段都只能為空

  • 更奇怪的是每次只成功了一半,還發(fā)現(xiàn)了 show warnings 可以查看警告信息咳燕,最后發(fā)現(xiàn)時 access 導出數(shù)據(jù)時是使用 \t 分割行的乒躺,orz

    show warnings
    

最后附上成功導入的腳本

LOAD DATA LOCAL INFILE "filename" INTO TABLE tablename 
CHARACTER SET utf8 
FIELDS TERMINATED BY ',' 
ENCLOSED BY """"  
LINES TERMINATED BY '\r' 
(COLUMN1, COLUMN2, ......);

測試成功后,將切割的數(shù)據(jù)合并

cat x* > file

再執(zhí)行命令曹货,大功告成!顶籽!

總結

敲命令還是很有成就感的,有時候要比使用某些軟件效率要高坏为,至少大多數(shù)軟件對大文件讀取都沒有做優(yōu)化镊绪,這對于經(jīng)常接觸大文件的人簡直是噩夢!蝴韭!atom 打開幾M的數(shù)據(jù)都卡,替換更卡摧找!果然使用 vim 替換功能牢硅,但是 vim 也不發(fā)操控大文件(幾個G以上),當然我們可以寫個腳本减余,可以將文件切割,逐一對文件進行操作如筛!也不是不行抒抬!

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市擦剑,隨后出現(xiàn)的幾起案子惠勒,更是在濱河造成了極大的恐慌,老刑警劉巖纠屋,帶你破解...
    沈念sama閱讀 218,451評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件售担,死亡現(xiàn)場離奇詭異闯估,居然都是意外死亡吼和,警方通過查閱死者的電腦和手機涨薪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評論 3 394
  • 文/潘曉璐 我一進店門刚夺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來末捣,“玉大人,你說我怎么就攤上這事箩做。” “怎么了安吁?”我有些...
    開封第一講書人閱讀 164,782評論 0 354
  • 文/不壞的土叔 我叫張陵燃辖,是天一觀的道長。 經(jīng)常有香客問我妇智,道長氏身,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評論 1 294
  • 正文 為了忘掉前任航徙,我火速辦了婚禮豁状,結果婚禮上倒得,老公的妹妹穿的比我還像新娘。我一直安慰自己霞掺,他們只是感情好,可當我...
    茶點故事閱讀 67,733評論 6 392
  • 文/花漫 我一把揭開白布缠劝。 她就那樣靜靜地躺著,像睡著了一般惨恭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上萝究,一...
    開封第一講書人閱讀 51,578評論 1 305
  • 那天锉罐,我揣著相機與錄音,去河邊找鬼栽连。 笑死侨舆,一個胖子當著我的面吹牛,可吹牛的內容都是我干的挨下。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼绩聘,長吁一口氣:“原來是場噩夢啊……” “哼耗啦!你這毒婦竟也來了?” 一聲冷哼從身側響起帜讲,我...
    開封第一講書人閱讀 39,241評論 0 276
  • 序言:老撾萬榮一對情侶失蹤似将,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后在验,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡盏触,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,878評論 3 336
  • 正文 我和宋清朗相戀三年赞辩,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片辨嗽。...
    茶點故事閱讀 39,992評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖岛心,靈堂內的尸體忽然破棺而出篮灼,到底是詐尸還是另有隱情,我是刑警寧澤诅诱,帶...
    沈念sama閱讀 35,715評論 5 346
  • 正文 年R本政府宣布娘荡,位于F島的核電站,受9級特大地震影響炮沐,放射性物質發(fā)生泄漏。R本人自食惡果不足惜大年,卻給世界環(huán)境...
    茶點故事閱讀 41,336評論 3 330
  • 文/蒙蒙 一翔试、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧垦缅,春花似錦、人聲如沸壁涎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽庞溜。三九已至碑定,卻和暖如春又官,著一層夾襖步出監(jiān)牢的瞬間漫试,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評論 1 270
  • 我被黑心中介騙來泰國打工外构, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人审编。 一個月前我還...
    沈念sama閱讀 48,173評論 3 370
  • 正文 我出身青樓歧匈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親勘究。 傳聞我的和親對象是個殘疾皇子斟冕,可洞房花燭夜當晚...
    茶點故事閱讀 44,947評論 2 355

推薦閱讀更多精彩內容