我必须使用最大 2GB 的大 CSV 文件。更具体地说,我必须将所有这些数据上传到 mySQL 数据库,但在我必须对此进行一些计算之前,所以我需要在 MATLAB 中做所有这些事情(我的主管也想在 MATLAB 中做,因为他只熟悉MATLAB:()。
知道如何处理这些大文件吗?
您可能应该使用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
.
在这个文件交换项目中有关于在 MATLAB 中处理大型数据集的好建议。
具体主题包括:
* 了解数组的最大大小和 MATLAB 中的工作区
* 使用未记录的功能向您显示 MATLAB 中的可用内存
* 在 Windows XP 下设置 3GB 开关以获得 1GB 更多内存用于 MATLAB
* 使用 textscan 读取大用于读取大型二进制文件的文本文件和内存映射功能