1.1.1 • Published 9 years ago

csv-transformer v1.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
9 years ago

csv-transform

Transforms a CSV file -- well, any delimited file, really, into another file using a template.

You can use this as a stand alone CLI utility, or as a library in your project.

Usage

npm install csv-transformer

Note that the package is csv-transformer, but the library is csv-transform, due to namespace conflicts in npm.

As a CLI Utility

node csv-transform -t '{{colA}} {{colB}}' < input.csv > output.txt

Options

  • -t or --template The string to use to transform the input file (i.e. 'The {{col1}} brown {{col2}} jumped over the {{col3}} dog.')
  • -i or --input Path to the CSV input file.
  • -o or --output Path to the output file.
  • -d or --delimiter The column delimiter of the CSV input file.
  • -r or --rowDelimiter The row delimiter of the CSV input file.
  • -q or --quote The column quote character.
  • -e or --escape The quote escape character.
  • -ot or --openTag The open tag used in the template.
  • -ct or --closeTag The close tag used in the template.
  • -v or --version This version of csv-transform.
  • -h or --help Prints help info.

As a Library

var CsvTransform = require('csv-transform');
var options = {
  template: '{{colA}} {{colB}}',
  input: 'input.csv',
  output: 'output.csv'
};
var transform = new CsvTransform(options);

transform.on('read', function (result, data) {
  console.log('Read line ' + result);
});

transform.on('finish', function (recodsProcessed) {
  console.log('Processed ' + recordsProcessed + ' records');
});

// Deprecated, use .on('read') instead.
transform.run(function (err, data) {
  if (err) {
    console.log(err);
  } else {
    console.log('Formatted record: ' + data);
  }
});

Events

  • read( string result, object data ) - Triggered when a line is read and processed from the CSV file.
  • finish( int recordsProcessed ) - Triggered when the file has finished processing.

How it works

The columns defined in the first row of the input file become variable names. csv-transform accepts a template that is used to output a separate row for each input row based upon these variables.

Assume you have the following input file:

ID,First Name,Last Name,Email
1,Roger,Sherman,judgesherman@mailinator.com
2,James,Madison,madmanmadison@mailinator.com

Now, from this input file we need a set of SQL queries to update user records with their correct name and email address. We can use the following template:

UPDATE users SET first_name='{{First Name}}', last_name='{{Last Name}}', email='{{email}}' WHERE id={{ID}};

When run against our input file it produces the following output:

UPDATE users SET first_name='Roger', last_name='Sherman', email='judgesherman@mailinator.com' WHERE id=1;
UPDATE users SET first_name='James', last_name='Madison', email='madmanmadison@mailinator.com' WHERE id=2;
1.1.1

9 years ago

1.1.0

9 years ago

1.0.1

9 years ago