# csv-split-stream

> Splits a CSV read stream into multiple write streams

Latest version **1.0.2** (published 2017-04-10) · MIT license · 0 weekly downloads

## Install

```sh
npm install csv-split-stream
pnpm add csv-split-stream
yarn add csv-split-stream
bun add csv-split-stream
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2017-04-10 |
| First published | 2017-02-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 12 |
| Author | Alex Murashkin |
| Maintainers | alex.murashkin |
| Keywords | csv, split, stream |

## Links

- npm: https://www.npmjs.com/package/csv-split-stream
- Repository: https://github.com/AlexanderMS/csv-split-stream
- Homepage: https://github.com/AlexanderMS/csv-split-stream#readme
- Issues: https://github.com/AlexanderMS/csv-split-stream/issues
- npm.io page: https://npm.io/package/csv-split-stream

## Dependencies (1)

- [byline](https://npm.io/package/byline.md) 5.0.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

- 1.0.2 (latest) — 2017-04-10
- 1.0.1 — 2017-02-08
- 1.0.0 — 2017-02-08

## README

# csv-split-stream

[![npm version](https://badge.fury.io/js/csv-split-stream.svg)](https://badge.fury.io/js/csv-split-stream)
[![CircleCI](https://circleci.com/gh/AlexanderMS/csv-split-stream.svg?style=shield)](https://circleci.com/gh/AlexanderMS/csv-split-stream)
[![Coverage Status](https://coveralls.io/repos/github/AlexanderMS/csv-split-stream/badge.svg?branch=master)](https://coveralls.io/github/AlexanderMS/csv-split-stream?branch=master)

Splits a CSV read stream into multiple write streams.

## Install

`npm install csv-split-stream`

## Usage

1. Split a local CSV file into multiple CSV files (10000 lines each, excluding the header row):

  ```javascript
  const csvSplitStream = require('csv-split-stream');

  return csvSplitStream.split(
    fs.createReadStream('input.csv'),
    {
      lineLimit: 100
    },
    (index) => fs.createWriteStream(`output-${index}.csv`)
  )
  .then(csvSplitResponse => {
    console.log('csvSplitStream succeeded.', csvSplitResponse);
    // outputs: {
    //  "totalChunks": 350,
    //  "options": {
    //    "delimiter": "\n",
    //    "lineLimit": "10000"
    //  }
    // }
  }).catch(csvSplitError => {
    console.log('csvSplitStream failed!', csvSplitError);
  });

  ```

2. Download a large CSV file via HTTP, split it into chunks of 10000 lines and upload each of them to s3:

  ```javascript
  const http           = require('http'),
  const csvSplitStream = require('csv-split-stream');
  const AWS            = require('aws-sdk'),
  const s3Stream       = require('s3-upload-stream')(new AWS.S3());

  function downloadAndSplit(callback) {
    http.get({...}, downloadStream => {
      csvSplitStream.split(
        downloadStream,
        {
          lineLimit: 10000
        },
        (index) => s3Stream.upload({
          Bucket: 'testBucket',
          Key: `output-${index}.csv`
        })
      )
      .then(csvSplitResponse => {
        console.log('csvSplitStream succeeded.', csvSplitResponse);
        callback(...);
      }).catch(csvSplitError => {
        console.log('csvSplitStream failed!', csvSplitError);
        callback(...);
      });
    });    
  }
  ```

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