用php写个API将txt中文件导入到数据库??

现在txt文件格式如下
1 2018-02-24 08:38:37
2 2018-02-24 08:38:39
3 2018-02-24 08:38:30

大概有30W条数据,就不一一例举了

现在我是使用explode函数通过空格进行分割数据然后逐条插入数据库
但是这样分割,会把后面时间也分割成两块,想请问一下有没有什么解决办法。还有就是必须通过API导入数据,有没有更好的办法,因为我这样逐条插入效率太低了

阅读 2.4k
2 个回答

1.explode第三个参数可以指定切割数量, 达到数量后后续的就不再切割了

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

2.insert into xx(id) values (1),(2),(3)就可以一次性插入3条,比执行3条sql性能好很多,但要注意不能拼一条很长的sql,会超过max_allowed_packet

直接在PHP中用insert导入数据快不起来,建议把TXT转化为CSV文件,用MySQL的load data infile命令,执行速度会远远快于insert。
如果用$pdo->exec('load data…')还是嫌慢,你可以写一个shell脚本,在PHP里用exec调用,那么这个流程就以异步方式执行了,在调用API的程序看来,这一过程就是瞬间完成的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题