knex-to-csv
v1.0.1
Published
Adds the .toStreamCSV() function to Knex's query builder to stream rows from Knex in CSV format to a writable stream.
Downloads
516
Maintainers
Readme
knex-to-csv
Adds the .toStreamCSV() function to Knex's query builder to stream rows from Knex in CSV format to a writable stream.
Install
$ npm i knex-to-csv --save
Setup
Import and call the attachToStreamCSV()
function after importing Knex:
const knex = require('knex');
const {attachToStreamCSV} = require('knex-to-csv');
attachToStreamCSV();
Usage
Export Knex rows to a CSV file:
const fs = require('fs')
csvWriter = fs.createWriteStream('/tmp/export.csv');
await knex.select().from('users').toStreamCSV(csvWriter)
// or with promise
knex.select().from('users').toStreamCSV(csvWriter)
.then(() => {
console.log('CSV exported successfully!');
})
.catch(e => {
console.log(e);
})
Specify CSV options and export Knex result rows to a CSV file:
const fs = require('fs')
csvWriter = fs.createWriteStream('/tmp/export.csv');
await knex.select().from('users').toStreamCSV(csvWriter, {csv: {separator: '|', newline: '\n'}})
Note
From Knex.js documentation:
If you wish to use streams with PostgreSQL, you must also install the pg-query-stream module. If you wish to use streams with the pgnative dialect, please be aware that the results will not be streamed as they are received, but rather streamed after the entire result set has returned. On an HTTP server, make sure to manually close your streams if a request is aborted.
API
toStreamCSV(writableStream, options?): Promise<number>
writableStream
Any writable stream or Duplex stream that implements the stream.Writable class such as fs
write streams, http
ServerResponse, TCP sockets, Zlib streams, etc.
options
Type: object
Default: {}
Keys: path
, csv
path
Type:
any
Default:
undefined
A path for JSONStream.parse
csv
Type:
object
Default:
{separator: ',', newline: '\n', headers: undefined, sendHeaders: true}
Options to pass to csv-write-stream
License
Acknowledgements
This library was inspired from the following libraries: