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

2015-12-13 14:11:30 +08:00
 lxy
拿到一个文本文件,大小 20G 左右,虽然可以用 WinHex 查找,但是每次查不到一半就很卡(内存占用飙升),而且考虑到以后偶尔还会查询,所以想存入数据库。我打算用 Python 写个脚本批量导入 Mysql ,做索引,字段也不多。不知是否可行?或有其它更好的办法?
PS. 笔记本只有 4G 内存。
2265 次点击
所在节点    问与答
12 条回复
gamexg
2015-12-13 14:23:51 +08:00
能说清楚查询的类型吗?
数字、时间之类的能做索引,纯文本开头匹配也能做索引。
但是要是纯文本内部包含关键字那你需要全文搜索。
xufang
2015-12-13 14:29:08 +08:00
呵呵,社工库,还是用 sqlserver 吧,傻瓜并且性能也够。
uuspider
2015-12-13 14:34:12 +08:00
sed awk 应该可以胜任。
lxy
2015-12-13 14:42:05 +08:00
@gamexg
@xufang 嗯,就是社工库的类型
@uuspider 主要考虑在 Windows 环境下完成
joshz
2015-12-13 15:04:56 +08:00
@lxy 这几个工具都是跨平台的吧,也可以考虑 Cygwin ,当然性能会差些
xufang
2015-12-13 15:07:59 +08:00
@joshz cygwin 的 io 性能呵呵。真要用 sed 和 awk 别用 cygwin 或 msys 封装过的,应该用 gnuwun32 那一类的。
xufang
2015-12-13 15:11:01 +08:00
说个笑话,我厂不止一个人反应在 cygwin 编译比放在 linux 虚拟机下用 mingw 编译还要慢了。
joshz
2015-12-13 15:13:39 +08:00
@xufang 嗯,只是提供一种方案,直接移植的性能当然好很多。
Valyrian
2015-12-13 16:17:47 +08:00
难道不是 cat xxx.txt | grep xxx ?
9
2015-12-13 16:30:25 +08:00
@Valyrian cat + grep 典型的用法错误,要纠正过来啦。
msg7086
2015-12-13 16:46:16 +08:00
@xufang msys2 性能很差吗?
没比较过不过直觉上用 gcc 编译完以后应该也是原生性能吧?

@Valyrian 比 grep xxx xxx.txt 好在哪里?
Rubin
2015-12-13 17:47:44 +08:00
为什么不是先把这个 20G 的文本做切分呢,然后再 Python 写脚本处理不就简单多了么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/243198

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX