lxy
V2EX  ›  问与答

想查询一个超大的文本文件内容

  •  
  •   lxy · Dec 13, 2015 · 3208 views
    This topic created in 3985 days ago, the information mentioned may be changed or developed.
    拿到一个文本文件,大小 20G 左右,虽然可以用 WinHex 查找,但是每次查不到一半就很卡(内存占用飙升),而且考虑到以后偶尔还会查询,所以想存入数据库。我打算用 Python 写个脚本批量导入 Mysql ,做索引,字段也不多。不知是否可行?或有其它更好的办法?
    PS. 笔记本只有 4G 内存。
    12 replies  •  2015-12-13 17:47:44 +08:00
    gamexg
    gamexg
    Dec 13, 2015
    1
    能说清楚查询的类型吗?
    数字、时间之类的能做索引,纯文本开头匹配也能做索引。
    但是要是纯文本内部包含关键字那你需要全文搜索。
    xufang
    xufang
    Dec 13, 2015
    2
    呵呵,社工库,还是用 sqlserver 吧,傻瓜并且性能也够。
    uuspider
    uuspider
    Dec 13, 2015
    3
    sed awk 应该可以胜任。
    lxy
    lxy
    OP
    Dec 13, 2015
    4
    @gamexg
    @xufang 嗯,就是社工库的类型
    @uuspider 主要考虑在 Windows 环境下完成
    joshz
    joshz
    Dec 13, 2015
    5
    @lxy 这几个工具都是跨平台的吧,也可以考虑 Cygwin ,当然性能会差些
    xufang
    xufang
    Dec 13, 2015 via Android
    6
    @joshz cygwin 的 io 性能呵呵。真要用 sed 和 awk 别用 cygwin 或 msys 封装过的,应该用 gnuwun32 那一类的。
    xufang
    xufang
    Dec 13, 2015 via Android
    7
    说个笑话,我厂不止一个人反应在 cygwin 编译比放在 linux 虚拟机下用 mingw 编译还要慢了。
    joshz
    joshz
    Dec 13, 2015
    8
    @xufang 嗯,只是提供一种方案,直接移植的性能当然好很多。
    Valyrian
    Valyrian
    Dec 13, 2015
    9
    难道不是 cat xxx.txt | grep xxx ?
    9
    9
    Dec 13, 2015
    10
    @Valyrian cat + grep 典型的用法错误,要纠正过来啦。
    msg7086
    msg7086
    Dec 13, 2015
    11
    @xufang msys2 性能很差吗?
    没比较过不过直觉上用 gcc 编译完以后应该也是原生性能吧?

    @Valyrian 比 grep xxx xxx.txt 好在哪里?
    S02N2W42tmoa1fG1
    S02N2W42tmoa1fG1
    Dec 13, 2015
    12
    为什么不是先把这个 20G 的文本做切分呢,然后再 Python 写脚本处理不就简单多了么。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2545 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 11:55 · PVG 19:55 · LAX 03:55 · JFK 06:55
    ♥ Do have faith in what you're doing.