在MATLAB中使用大型CSV文件

OHL*_*ÁLÁ 5 mysql csv file-io matlab bigdata

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

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

Edr*_*ric 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
Run Code Online (Sandbox Code Playgroud)

编辑

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