UNPKG

csv

Version:

CSV parser with simple api, full of options and tested against large datasets.

86 lines (71 loc) 2.24 kB
--- language: en layout: page title: "Columns ordering and filtering" date: 2012-10-24T13:17:49.531Z comments: false sharing: false footer: false navigation: csv github: https://github.com/wdavidw/node-csv-parser --- Columns are defined in the `csv.options.from` and `csv.options.to`. Columns names may be provided or discovered in the first line with the read options `columns`. Most user will defined columns as an array of property names. If defined as an array, the order must match the one of the input source. If set to `true`, the fields are expected to be present in the first line of the input source. For greater flexibility in parallel with the `csv.options.to.header` option, it is possible to defined the "columns" options as an object where keys are the property names and values are the display name. You can define a different order and even different columns in the read options and in the write options. If the `columns` is not defined in the write options, it will default to the one present in the read options. When working with fields, the `transform` method and the `data` events receive their `row` parameter as an object instead of an array where the keys are the field names. ```javascript // node samples/column.js var csv = require('csv'); csv() .from.path(__dirname+'/columns.in', { columns: true }) .to.stream(process.stdout, { columns: ['id', 'name'] }) .transform(function(row){ row.name = row.firstname + ' ' + row.lastname return row; }); // Print sth like: // 82,Zbigniew Preisner // 94,Serge Gainsbourg ``` Columns as a true: ```javascript var data = 'field1,field2\nval1,val2'; csv() .from(data, {columns: true}) .to(function(data){ data.should.eql('val1,val3'); }); ``` Columns as an array: ```javascript var data = 'field1,field2,field3\nval1,val2,val3'; csv() .from(data, {columns: true}) .to(function(data){ data.should.eql('val1,val3'); }, {columns: ['field1', 'field3']}); ``` Columns as an object with header option: ```javascript var data = 'field1,field2,field3\nval1,val2,val3'; csv() .from(data, {columns: true}) .to(function(data){ data.should.eql('column1,column3\nval1,val3'); }, {columns: {field1: 'column1', field3: 'column3'}, header: true}); ```