第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何處理百萬條數(shù)據(jù)寫入到數(shù)據(jù)庫

如何處理百萬條數(shù)據(jù)寫入到數(shù)據(jù)庫

冉冉說 2019-04-09 20:23:19
在一個文本文件里存了一百萬條數(shù)據(jù),一行一條,我需要把符合條件的每一行數(shù)據(jù)寫入到數(shù)據(jù)庫里,按照以前的做法就是讀取文件里的數(shù)據(jù),然后存入數(shù)組,然后foreach數(shù)組進行一條一條的處理(符合條件的寫入到數(shù)據(jù)庫),但是面對上百萬條數(shù)據(jù),如果我再繼續(xù)這樣做看來是自尋死路,可是處理大數(shù)據(jù)真是大姑娘我坐花轎可是頭一回,一點經(jīng)驗也沒有,從網(wǎng)上找資料說用php進程/線程來解決,我對進程與線程是一頭污水,請大牛們進來分享一下這方面的經(jīng)驗,是怎么處理大數(shù)據(jù)的,如果通過進程/線程又是怎么實現(xiàn)的呢?
查看完整描述

2 回答

?
HUH函數(shù)

TA貢獻1836條經(jīng)驗 獲得超4個贊

按一千萬行的數(shù)據(jù)來計算,假設你對PHP最熟悉,開發(fā)速度最快,假設你要寫入到MySQL中。
用shell將一千萬行文件切分成100個文件,這樣每個文件有10萬行,具體做法可以mansplit。
寫php腳本,腳本內(nèi)容是讀一個文件,然后輸出有效的數(shù)據(jù)。注意數(shù)據(jù)格式,嚴格按照表中字段的順序來寫,字段之間用半角分號隔開,行之間用\n隔開。具體參數(shù)可配置,參見MySQL的loaddata命令參數(shù)。注意是phpcli方式運行的,不要拿Apache或者其他webserver下面跑這個東西。如果按行讀不知道怎么搞可以直接用php的file()函數(shù),生成的sql語句通過error_log($sql,3,"/path/to/dataa")函數(shù)寫入到文件中。同時可以echo一些調(diào)試信息,以備后續(xù)檢查。
寫shell腳本調(diào)用php處理日志.腳本可以類似來寫
/path/to/php/bin/php-fgenMySQLdata.phpsource=logaout=dataa>/errora.log&
/path/to/php/bin/php-fgenMySQLdata.phpsource=logbout=datab>/errorb.log&
/path/to/php/bin/php-fgenMySQLdata.phpsource=logcout=datac>/errorc.log&
....重復一百行,機器配置低可以分批寫,每個寫10行也行。這個腳本內(nèi)容很有規(guī)律吧,本身也可以用php來生成。時間又省了。
在機器上執(zhí)行這個shell腳本,實際上就啟動多個PHP進程來生成數(shù)據(jù)。配置夠牛的話,就等于你啟動了100個PHP進程來處理數(shù)據(jù)。速度又快了。
繼續(xù)寫shell腳本,內(nèi)容是打開MySQL用loaddata來載入數(shù)據(jù)。
mysql-h127.0.0.1-uUser-ppwd-P3306-Ddbname-e'loaddatainfile"/path/to/dataa"intotableTableName(Field1,Field1,Field1);'
其中的field1...要跟生成數(shù)據(jù)的順序?qū)?,這個命令可以直接執(zhí)行,也可以放到shell里面重復寫N行,然后執(zhí)行shell腳本。
PS:注意編碼
                            
查看完整回答
反對 回復 2019-04-09
  • 2 回答
  • 0 關注
  • 1139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號