csvql v0.1.6
csvql
A module to quickly query CSV data as a SQL
Similar packages:
Installation
CLI
npm:
npm install --global csvqlyarn:
yarn add global csvqlAPI
npm:
npm install csvqlyarn:
yarn add csvqlUsage
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'
}
]