Adds the .toStreamCSV() function to Knex's query builder to stream rows from Knex in CSV format to a writable stream.
$ npm i knex-to-csv --save
Import and call the attachToStreamCSV()
function after importing Knex:
const knex = require('knex');
const {attachToStreamCSV} = require('knex-to-csv');
attachToStreamCSV();
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'}})
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.
toStreamCSV(writableStream, options?): Promise<number>
Any writable stream or Duplex stream that implements the stream.Writable class such as fs
write streams, http
ServerResponse, TCP sockets, Zlib streams, etc.
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
This library was inspired from the following libraries: