处理大型CSV文件的程序

13

有没有好的应用程序可以处理读取大型CSV文件?我处理的一些数据文件达到了1 GB的范围。它们的行数太多,Excel甚至无法处理。使用Access可能会有点慢,因为您必须将其导入数据库才能直接使用它们。是否有一种程序可以打开大型CSV文件并提供简单的电子表格布局,以帮助您轻松快速地浏览数据?


是的,有的。您可以使用OpenRefine(或Google Refine)。 OpenRefine就像是一种功能强大的电子表格软件。您可以操作的文件大小取决于计算机的内存。 - Estevão Lucas
7个回答

8
MySQL可以使用LOAD DATA INFILE命令快速将CSV文件导入到表中。它还可以直接从CSV文件中读取,绕过任何导入过程,使用CSV存储引擎

使用LOAD DATA INFILE将其导入到本地表中具有启动成本,但之后您可以更快地进行INSERT/UPDATE,以及索引字段。使用CSV存储引擎几乎是瞬时的,但只有顺序扫描会很快。

更新这篇文章(向下滚动到标题为Instant Data Loads的部分)介绍了使用两种方法将CSV数据加载到MySQL中,并提供了示例。


我曾经处理过包含15-30MB CSV文件的房地产MLS数据集。如果没有MySQL LOAD INFILE,每个反馈的处理时间将需要一个小时甚至更长时间...但使用MySQL和原始表格,我将处理时间缩短到5-6分钟,即使是更大的数据集也能如此。 - David

8

我发现reCSVeditor是一个非常适合编辑大型CSV文件的程序。它非常适合剥离不必要的列。我已经很容易地使用它来处理100万条记录的文件。


+1 reCSVeditor 对我来说非常好用,可以处理超过 2,000,000 行的近 2GB 文件。 - Stuart Allen
嗨,我下載了這個壓縮檔,但是我不知道該怎麼使用它,你能否指導一下我該怎麼做呢? - aasthetic
@richi_18007 Recsveditor 解压缩内容,然后运行安装程序。 - Bruce Martin

2

vEdit非常适合这个需求。我经常使用它打开100+兆的文件(虽然你说可以处理1G,但他们在网站上宣传可以处理两倍大小的文件)。它支持正则表达式和许多其他功能。70美元对于你可以用它做的事情来说很便宜。


1

如果您不需要真正的电子表格静态字段大小视图,GVim可以免费处理大文件。


0
如果您可以将数据放入内存并且喜欢使用Python,我建议您查看Augustus的UniTable部分。(免责声明:Augustus是开源的(GPLv2),但我在编写它的公司工作。)
虽然文档不是很完善,但这应该能帮助您入门。
from augustus.kernel.unitable import *
a = UniTable().from_csv_file('filename')
b = a.subtbl(a['key'] == some_value) #creates a subtable

它不会直接给你一个类似Excel的界面,但是通过一点点的努力,你可以快速地得到许多统计数据。


0

vEdit很棒,但不要忘记你总是可以回到“基础”上,看看Cygwin并开始使用grep。

有用的命令

  • grep
  • head
  • tail
  • 当然还有perl!

0

这取决于您实际想要用数据做什么。像那样的大型文本文件通常只需要一小部分数据,因此不要忽视像“grep”这样的工具,以便提取您想查找和处理的内容。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接