鍍金池/ 問答/PHP/ 用php寫個API將txt中文件導入到數(shù)據(jù)庫??

用php寫個API將txt中文件導入到數(shù)據(jù)庫??

現(xiàn)在txt文件格式如下
1 2018-02-24 08:38:37
2 2018-02-24 08:38:39
3 2018-02-24 08:38:30

大概有30W條數(shù)據(jù),就不一一例舉了

現(xiàn)在我是使用explode函數(shù)通過空格進行分割數(shù)據(jù)然后逐條插入數(shù)據(jù)庫
但是這樣分割,會把后面時間也分割成兩塊,想請問一下有沒有什么解決辦法。還有就是必須通過API導入數(shù)據(jù),有沒有更好的辦法,因為我這樣逐條插入效率太低了

回答
編輯回答
笨笨噠

1.explode第三個參數(shù)可以指定切割數(shù)量, 達到數(shù)量后后續(xù)的就不再切割了

$s= 'aaa 2018-02-24 08:38:37';
print_r(explode(' ', $s, 2));

2.insert into xx(id) values (1),(2),(3)就可以一次性插入3條,比執(zhí)行3條sql性能好很多,但要注意不能拼一條很長的sql,會超過max_allowed_packet

2018年3月27日 08:54
編輯回答
短嘆

直接在PHP中用insert導入數(shù)據(jù)快不起來,建議把TXT轉(zhuǎn)化為CSV文件,用MySQL的load data infile命令,執(zhí)行速度會遠遠快于insert。
如果用$pdo->exec('load data…')還是嫌慢,你可以寫一個shell腳本,在PHP里用exec調(diào)用,那么這個流程就以異步方式執(zhí)行了,在調(diào)用API的程序看來,這一過程就是瞬間完成的。

2018年3月27日 05:02