Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smikodanic/csvman
Nodejs library which helps with CSV file management.
https://github.com/smikodanic/csvman
Last synced: 15 days ago
JSON representation
Nodejs library which helps with CSV file management.
- Host: GitHub
- URL: https://github.com/smikodanic/csvman
- Owner: smikodanic
- License: other
- Created: 2022-08-11T16:44:46.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2022-10-08T08:21:46.000Z (over 2 years ago)
- Last Synced: 2024-12-19T13:32:04.696Z (21 days ago)
- Language: JavaScript
- Size: 21.5 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# csvman
> Nodejs library which helps with CSV file management.The library acts as a lightwight database wih CSV files.
## Installation
```bash
$ npm install --save csvman
```## Example
```js
/*** NodeJS script ***/
const CSV = require('csvman');const fja = async () => {
const csvOpts = {
filePath: './appended_arr.csv',
encoding: 'utf8',
mode: 0o644,fields: ['url', 'name', 'size'], // only these fields will be effective
fieldDelimiter: ',',
fieldWrapper: '"',
rowDelimiter: '\n'
};
const csv = new CSV(csvOpts);const rows = await csv.readRows(false); // all types will be string
// const rows = await csv.readRows(true); // or just csv.readRows()
console.log('rows in total:: ', rows.length);
console.log(JSON.stringify(rows, null, 4));
};fja();
```## API
#### constructor(opts) :void
```js
const CSV = require('csvman);const opts = {
filePath: './input.csv',
encoding: 'utf8',
mode: '0664',
fields: ['url', 'name'], // define active CSV fields
fieldDelimiter: ',',
fieldWrapper: '"',
rowDelimiter: '\n'
}
const csv = new CSV(opts);
```#### async createFile() :void
Create CSV file defined in opts.filePath if it does not exist. If the file exists, it is NOT MODIFIED.#### async addHeader() :void
Add fields into the CSV Header. Only if the file is empty.#### async writeRows(rows:array) :void
Write multiple CSV rows. The rows argument is an array of objects.
CAUTION: Old content will be overwritten when this method is used.#### async appendRows(rows:array) :void
Append multiple CSV rows. The rows argument is an array of objects.
New content will be added to the old content.#### async readRows(convertType: boolean) :array
Read CSV rows and convert it in the array of objects.
If *convertType* is true then fields will convert the type automatically, for example string '5' will become number 5. The default is true.#### async updateRows(query:object, doc:object, upsert:boolean) :{count:number, rows_updated: object[]}
Find CSV row by query and update it with doc.
The query is inspired by MongoDB queries so it can use.
```
$eq, $ne, $gt, $gte, $lt, $lte, $regex, $in, $existsFor example: {name: {$regex: /john/i}}
```
The doc is object whose properties are CSV fields.
If the upsert is true insert a new row if the rows are not found by the query.#### async findRows(query) :object[]
Find CSV rows by the query. Use MongoDb inspired queries.#### async removeRows(query) :object[]
Find and remove CSV rows by the query. Use MongoDb inspired queries.
The returned value is the array of removed row objects.#### async extractFields() :array
Get fields array from the first (header) row.### License
The software licensed under [AGPL-3](LICENSE).