Skip to content

janch-tech/csv-rules

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

This tool can be used to organize transformations and mappings to a CSV within a JSON File. The transformation logic is referred to as rules in this document

Samples are located in the resource folder

Quick Start

Install from npmjs

Install csv-rules globally

npm install csv-rules -g

Simple Rule

Create a sample csv

mkdir example

echo "fname,lname,AppointmentDate
Ram,Sharma,12-20-1999
Bom,Burma,11-20-1999
Tony,Karma,10-20-1999" > sample.csv

Check content

cat sample.csv

Create a rule json file

echo '{
  "rules": {
    "FullName": "{{fname}} {{lname}}",
    "Country": "United States"
  },
  "output": {
    "format": "CSV",
    "fields": [
      "fname",
      "lname",
      "AppointmentDate",
      "FullName",
      "Country"
    ]
  }
}' > rules.json

Run this to apply the rule above to the csv

csv-rules run sample.csv -c rules.json -o output.csv
cat output.csv

Observe that a new column FullName has been added

Library Based Rules

Create a sample csv

mkdir example

echo "fname,lname,AppointmentDate
Ram,Sharma,12-20-1999
Bom,Burma,11-20-1999
Tony,Karma,10-20-1999" > sample.csv

Check content

cat sample.csv

Create a rule json file

echo '{
  "rules": {
    "InitialFirstName": {
      "voca": [
        "first",
        "{{fname}}"
      ]
    },
    "InitialLastName": {
      "voca": [
        "last",
        "{{lname}}"
      ]
    },
    "Initials": "{{InitialFirstName}}{{InitialLastName}}",
    "AppointmentDate": {
      "dayjs": [
        "{{AppointmentDate}}",
        "MM-DD-YYY",
        "MM/DD/YYYY"
      ]
    }
  },
  "output": {
    "format": "CSV",
    "fields": [
      "Initials",
      "AppointmentDate"
    ]
  }
}' > rules.json

Run this to apply the rule above to the csv

csv-rules run sample.csv -c rules.json -o output.csv
cat output.csv

Observe that the output contains the columns Initials and a reformatted AppointmentDate.

csv-rules relies voca and dayjs functions for the required transformations. Visit their documentation to see which other functions are supported

Install From Github

npm install

Test

npm run test

Usage

# Get Help
npm run csv-rules -h

# Get Help about run command

npm run csv-rules run -h

# Example Usage where output is shown to terminal
npm run csv-rules run ./resource/sample_source.csv -c ./resource/sample_rules.json

# Example Usage where output is written to file
npm run csv-rules run ./resource/sample_source.csv -c ./resource/sample_rules.json -o output.csv

Examples

To see examples about rules the following will be helpful

  1. Sample Rule file in resourceFolder/sample_rules
  2. Unit test files test/transformation