mysql - 在 MATLAB 中处理大型 CSV 文件

标签 mysql matlab file-io csv bigdata

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

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

最佳答案

你可能应该使用 textscan以 block 的形式读取数据,然后进行处理。这可能比一次读取一行更有效。例如,如果你有 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 更容易也可能更高效.

关于mysql - 在 MATLAB 中处理大型 CSV 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5702872/

相关文章:

c# - Entity Framework ,表有 2 个外键到 2 个不同的表

matlab - 向 worker 发送数据

matlab - 用 NaN 对矩阵进行排序,提取索引向量并将 NaN 移到末尾

java - 确保您正确关闭文件的 Java 单元测试的好模式是什么?

c++ - CGAL::Surface_mesh_parameterization: 把顶点写到off按原来的顺序

eclipse IDE中的java文件编程

python - 如何使用python将数据从一个mysql数据库传输到另一个数据库并映射具有不同列名的数据

mysql - php pdo 绑定(bind)参数不起作用

matlab - 从 Matlab/Octave 中的向量中识别(和删除)序列

mysql - 这个 mysql 查询有什么问题