Import large csv as datastore with formatting errors

6 ビュー (過去 30 日間)
Russell Shomberg
Russell Shomberg 2021 年 10 月 6 日
コメント済み: Russell Shomberg 2021 年 10 月 13 日
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?


per isakson
per isakson 2021 年 10 月 7 日
編集済み: per isakson 2021 年 10 月 7 日
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,'%'
  1 件のコメント
Russell Shomberg
Russell Shomberg 2021 年 10 月 13 日
This is great! I can also write a file with all the bad rows!


その他の回答 (0 件)




Community Treasure Hunt

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

Start Hunting!

Translated by