Heim  >  Fragen und Antworten  >  Hauptteil

用php处理一个超大sqlite文件(几十G),有什么好方法?

用php处理一个超大sqlite文件(几十G),有什么好方法?
处理的时候 直接死了~~

PHP中文网PHP中文网2712 Tage vor628

Antworte allen(9)Ich werde antworten

  • ringa_lee

    ringa_lee2017-05-16 13:06:33

    这么大的文件PHP肯定是处理不了的,PHP处理文件首先要把它读到内存中,而每个脚本能够使用的内存跟PHP配置文件中的memory_limit是相关的。只要你内存足够大,你可以设置它为不受限制,就能够使用系统的最大内存。

    推荐的解决方法是先把文件切小,通过shell程序比如sed把文件按一定大小(大小根据你的PHP内存大小确定)切割成若干个小文件,然后再用PHP处理。

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:06:33

    逐行读取,php有这个函数,每次读取3行,但是sqlite 是本地数据库,读取是驱动的事情吧,和php没多大关系吧,别一次性全打印就行了吧

    Antwort
    0
  • 阿神

    阿神2017-05-16 13:06:33

    应该把数据转到MYSQL再提供给PHP读写。sqlite本来是个小巧的文件数据库,处理巨大数据的能力低下。

    Antwort
    0
  • 大家讲道理

    大家讲道理2017-05-16 13:06:33

    震惊!这么大的数据量居然还用sqlite。
    再说你一次性把几十G读到内存,除非你的内存真的有几十G,否则一定爆内存。
    建议尝试分割这个数据库或转换成其他类型的数据库处理。

    Antwort
    0
  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-16 13:06:33

    PHP对文本的处理并不理想,很慢的。 入mysql后在做处理的方案是可行的,就是比较耗时。

    参考 用它查吧

    Antwort
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:06:33

    不懂sqlite 但是这么大的文件直接处理一定很难。但是大体上有一个思路。就是拆解。按照库啊。表啊什么的。

    Antwort
    0
  • 高洛峰

    高洛峰2017-05-16 13:06:33

    既然是sqlite文件,那就按数据库读取->处理->存储就可以了,php默认能直接使用sqlite.

    Antwort
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 13:06:33

    sqlite转Mysql吧,然后优化索引,应该没啥问题了。

    Antwort
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-16 13:06:33

    参考一下这货

    Antwort
    0
  • StornierenAntwort