时间:2011-04-18 12:28:42

标签: mysql matlab file-io csv bigdata

我必须处理一个大的CSV文件,最高可达2GB。更具体地说,我必须将所有这些数据上传到mySQL数据库,但在我必须对其进行一些计算之前,所以我需要在MATLAB中做所有这些事情(我的主管也想在MATLAB中做,因为他熟悉MATLAB :()。

我知道如何处理这些大文件?

2 个答案:

答案 0 :(得分:9)

您应该使用textscan以块的形式读取数据,然后进行处理。这可能比一次读取一行更有效。例如,如果您有3列数据,则可以执行以下操作:

filename = 'fname.csv';
[fh, errMsg] = fopen( filename, 'rt' );
if fh == -1, error( 'couldn''t open file: %s: %s', filename, errMsg ); end
N  = 100; % read 100 rows at a time
while ~feof( fh )
  c  = textscan( fh, '%f %f %f', N, 'Delimiter', ',' );
  doStuff(c);
end

修改

这些天(R2014b及更高版本),使用datastore更容易也可能更有效。

答案 1 :(得分:0)

this file exchange item中的MATLAB中处理大型数据集方面有很好的建议。

  

具体主题包括:
  *了解数组的最大大小和MATLAB中的工作区
  *使用未记录的功能向您显示MATLAB中的可用内存
  *在Windows XP下设置3GB开关,为MATLAB增加1GB内存   *使用textscan读取大文本文件和内存映射功能以读取大型二进制文件