0.1.5 • Published 3 years ago

csvql v0.1.5

Weekly downloads
33
License
MIT
Repository
github
Last release
3 years ago

csvql

A module to quickly query CSV data as a SQL

Similar packages:

Installation

CLI

npm:

npm install --global csvql

yarn:

yarn add global csvql

API

npm:

npm install csvql

yarn:

yarn add csvql

Usage

This module can be used in two formats: CLI and API.

CLI

Create session

To start the application you use this command on terminal:

csvql [path/to/file1.csv[ path/to/file2.csv [...]]]
Arguments

Each argument needs to point to a CSV file.

Flags
  • -p | --persist: Create a disk database with the data when the session is closed. Values: <session-name> | null. If null a random name will be used;
  • -d | --delimiter: The delimiter of the CSV file. Default is ,. Values: <delimiter>;
  • -D | --disk: Create the session on a in-disk database, useful when the CSV is too large to a in-memory database;
  • -f | --from: Restart a persistent session in-memory. Values: <session-name>; If invalid the startup will be aborted;
  • --verbose: Show top level JavaScript errors if they occur.

After that the interactive terminal of csvql will start.

Commands

The CLI have 4 commands:

Help

Prints all the available commands.

csvql> help
select <sql query>: Queries into imported schemas.
schema <operation>: Manage the schemas of the current session.
  list: List all tables and columns available.
  import <path [as <tableName>[, ...]]>: Import a new schema from CSV file(s).
  drop <tableName>: Delete a table of the current session.
  rename <tableName> <newTableName>: Rename a table of the current session.
help: List all available commands.
exit: Close the current session.
Exit

Close the application, equivalent of ^C.

Schema

Manages the schemes on the current session

Operations

list

List all the tables on current session, with the types.

import

Import CSV files, follows the syntax:

csvql> schema import path/to/file.csv [as table] [, ...]

rename

Rename a table on current session.

drop

Delete a table on current session.

Select

SQL SELECT Query, from sqlite.

API

Initialization

// Importing
const createCsvql = require('csvql');

// Initialize
const csvql = await createCsvql(files, options);

Files

You can provide initial file paths:

const files = [
	'path/to/file1',
	'path/to/file2',
	'path/to/file3',
	...etc
];

Options

You can provide some options to change the behavior of the module:

const options = {
	from: null, // Import session (path/to/session)
    persist: null, // Save session (path/to/session)
    disk: null, // Create session on disk (path/to/session)
    parseCommaAsDecimal: false // Parse strings like 0,123 as 0.123
};

Functions

schema

list

List all tables on current session

const result = await csvql.schema('list');

Return:

const result = [
	{
		name: 'file',
		columns: [
			'a': 'int',
			'b': 'float'
		]
	},
	...etc
]

rename

Rename a table on current session

await csvql.schema('rename', 'oldName', 'newName');

import

await csvql.schema('import', 'path/to/file');

drop

Delete a table on current session

await csvql.schema('drop', 'file');
select

Run SQL-like SELECT's, as example:

const result = await csvql.select('* from file1');

The result will be the same as the better-sqlite3 module, with the format:

[
	{
		column: 'value'
	}
]