# dsv-stream

> large file, low memory footprint CSV parsing

Latest version **0.0.6** (published 2022-02-11) · 0 weekly downloads

## Install

```sh
npm install dsv-stream
pnpm add dsv-stream
yarn add dsv-stream
bun add dsv-stream
```

## Health

**Score 10/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; low quality score; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.6 |
| Published | 2022-02-11 |
| First published | 2018-06-18 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 4 |
| Unpacked size | 208.1 KB |
| Known vulnerabilities | 0 (+1 in 1 direct dependencies) |
| Install scripts | no |
| Author | Abbey Hawk Sparrow |
| Maintainers | khrome |
| Keywords | csv, tsv, dsv, ssv, stream, parse, large, files |

## Links

- npm: https://www.npmjs.com/package/dsv-stream
- npm.io page: https://npm.io/package/dsv-stream

## Dependencies (4)

- [uuid](https://npm.io/package/uuid.md) ^3.3.2
- [faker](https://npm.io/package/faker.md) 4.1.0
- [strangler](https://npm.io/package/strangler.md) ^1.1.0
- [seed-random](https://npm.io/package/seed-random.md) ^2.2.0

## Alternatives

- [csv-to-markdown-table](https://npm.io/package/csv-to-markdown-table.md) — 47.0K weekly downloads
- [@sapphire/ratelimits](https://npm.io/package/@sapphire/ratelimits.md) — 4.4K weekly downloads
- [js-csvparser](https://npm.io/package/js-csvparser.md) — 2.0K weekly downloads
- [@adadapted/js-sdk](https://npm.io/package/@adadapted/js-sdk.md) — 251 weekly downloads
- [@grapecity/spread-sheets-sparklines](https://npm.io/package/@grapecity/spread-sheets-sparklines.md) — 103 weekly downloads

## Recent versions

- 0.0.6 (latest) — 2022-02-11
- 0.0.5 — 2022-02-11
- 0.0.4 — 2022-02-11
- 0.0.3 — 2018-07-05
- 0.0.2 — 2018-07-05
- 0.0.1 — 2018-06-18

## README

dsv-stream
==========
I had to parse some 10GB+ CSVs recently and after trying library after library I wound up Having to build my own solution, but it relied on the fact that no line delimiters appeared in quoted text. I also maintain a quote aware delimeter function, so I rebuilt that as [a stream parser](https://www.npmjs.com/package/strangler#stranglerstreamdecomposer), Then built this DSV/CSV/TSV/SSV parsing library.

Installation
------------

    npm install dsv-stream

Usage
-----
Here's a simple example that streams a CSV into a file as JSON, row by row:

```js
    var dsv = require('dsv-stream');
    var stream = fs.createReadStream('data.csv');
    var decomposer = new dsv.CSV();
    var headers;
    let outputFile = 'output.json'
    fs.appendFile(outputFile, '[', function (err) {
        if (err) throw err;
        decomposer.on('row', function(row){
            let trimmed = row.map((field) => field.trim());
            let first = true;
            if(!headers){
                headers = trimmed;
            }else{
                let json = JSON.stringify(dsv.rowToObject(trimmed, headers));
                if(first) first = false;
                else json = ','+json;
                fs.appendFile(outputFile, json, function (err){

                });
                rows.push(dsv.rowToObject(trimmed, headers));
            }
        });
        decomposer.on('complete', function(){
            fs.appendFile(outputFile, ']', function (err) {
                //done, array of objects in `outputFile`
            });
        });
        stream.pipe(decomposer.writer());
    });
```

Testing
-------
Just run:

    mocha

Enjoy,
- Abbey Hawk Sparrow

---
_Source: https://npm.io/package/dsv-stream · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
