Filter löschen
Filter löschen

Import large csv as datastore with formatting errors

7 Ansichten (letzte 30 Tage)
I am trying to import a very large CSV file as a tall table. Right now I am just testing the demonstration code, I have run into a problem! At least one row in my CSV file has a formatting error. The error prevents any code from working.
ds = tabularTextDatastore('data.csv');
tt = tall(ds);
ids = unique(tt{:,25});
ids = gather(ids);
This code produces the error.
Evaluating tall expression using the Local MATLAB Session:
- Pass 1 of 1: 99% complete
Evaluation 90% complete
Error using (line 77)
Mismatch between file and format character vector.
Trouble reading 'Numeric' field from file (row number 17128, field number 50) ==> " .","",""," ."," .",".",132400,"-1.0","X",2008\n
Learn more about errors encountered during GATHER.
Error in (line 120)
[t, info] = ds.readData();
Error in tall/gather (line 50)
[varargout{:}, readFailureSummary] = iGather(varargin{:});
Caused by:
Reading the variable name 'Var50' using format '%f' from file: 'data.csv' starting at offset 2583691484.
I know from previous experience with this data set that one of the lines had a formatting error that then causes more errors. The file is too large to open and edit manually. Is there anyway for me to fix this error in matlab or throw out the bad lines?

Akzeptierte Antwort

per isakson
per isakson am 7 Okt. 2021
Bearbeitet: per isakson am 7 Okt. 2021
Comment out the offending rows
open files
while not( feof(fid) )
chr = fgetl(fid);
is_ok = analyse_row( chr );
if is_ok
fprintf( fid_out, '%s\n', chr )
fprintf( fid_out, '%% %s\n', chr )
close files
Test with small files. Five good rows and a couple of faulty rows.
Read the new file with CommentStyle,'%'

Weitere Antworten (0)


Mehr zu File Operations finden Sie in Help Center und File Exchange




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by