If you have a very large CSV and don’t want a library:

Browser: Native Streaming (no library)

<script>
async function streamCSV(url) {
  const response = await fetch(url);
  const reader = response.body.getReader();
  const decoder = new TextDecoder();
  let  columns;
  let buffer = '';
  i = 0;
  while (true) {
    const { value, done } = await reader.read();
    if (done) break;

    buffer += decoder.decode(value, { stream: true });
    let lines = buffer.split('\n');
    buffer = lines.pop(); // keep incomplete line

    for (const line of lines) {
       columns = line.split(',');
       j = 0;
       while(j < columns.length)
       {
        if(columns[j].search("Android") >= 0)
      {
      console.log(columns[j]); // process each row

      i ++;
      break;
      }

        j++;
       }
      
    }
  }

  if (buffer.trim()) {
    console.log(buffer.split(','));
   
  }
  console.log("done"+i+" - " +columns.length);
}

streamCSV('cal_activity.csv');
</script>



Leave a Reply