2011-04-18 11 views
5

Tengo que trabajar con un gran archivo CSV, hasta 2GB. Más específicamente, tengo que cargar todos estos datos en la base de datos mySQL, pero antes tengo que hacer algunos cálculos sobre eso, así que tengo que hacer todo esto en MATLAB (también mi supervisor quiere hacerlo en MATLAB porque está familiarizado con MATLAB :().Trabajando con un gran archivo CSV en MATLAB

alguna idea de cómo puedo manejar estos archivos de gran tamaño?

+0

¿Qué tipo de cálculo? ¿Necesita datos del archivo completo o podría procesarlos línea por línea? –

+0

Podría procesar línea por línea –

+0

Una descripción de su formato de archivo sería de gran ayuda. – gnovice

Respuesta

9

probablemente debería utilizar textscan para leer los datos en trozos y luego en el proceso. Esto probablemente será más eficiente que la lectura de una sola línea . a la vez Por ejemplo, si usted tiene 3 columnas de datos, se puede hacer:

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 

EDITAR

En estos días (R2014b y posterior), es más fácil y probablemente más eficiente usar un datastore.

+1

+1. ¿Podría hablar contigo para incluir más detalles en el mensaje de error? Los diagnósticos detallados de IM (NS) HO hacen que la depuración sea mucho más fácil y es un buen hábito para exponer los lectores de código de ejemplo. 'file = 'fname.csv'; [fh, errMsg] = fopen (archivo, 'rt'); si fh == -1; error ('No se pudo abrir el archivo% s:% s', file, errMsg); fin; ... fclose (fh); ' –

0

Hay buenos consejos sobre el manejo de grandes conjuntos de datos en MATLAB en this file exchange item.

temas específicos incluyen:
* Comprender el tamaño máximo de una matriz y el espacio de trabajo en MATLAB
* El uso de características no documentadas que le muestre la memoria disponible en MATLAB
* Ajuste de la 3GB en Windows XP para 1 GB obtener más memoria para MATLAB
* El uso de TextScan para leer grandes archivos de texto y función de asignación de memoria para leer archivos binarios grandes

Cuestiones relacionadas