@el3um4s/node-mdb
v0.1.2
Published
A Node.js javascript client implementing the ADODB protocol on windows.
Downloads
45
Maintainers
Readme
Node MDB
A Node.js javascript client implementing the ADODB protocol on windows.
NPM link: @el3um4s/node-mdb
This project arises from the need to access legacy databases. Read tables from MDB files. Performs simple queries on MDB files. It can be considered as an updated version of node-adodb. For *nix systems you can use Node MdbTools.
The library need system support
Microsoft.Jet.OLEDB.4.0
orMicrosoft.ACE.OLEDB.12.0
,Windows XP SP2
above supportMicrosoft.Jet.OLEDB.4.0
by default, Others need to install support!Recommended use
Microsoft.ACE.OLEDB.12.0
, download: Microsoft.ACE.OLEDB.12.0
Install and use the package
To use the package in a project:
npm i @el3um4s/node-mdb
and then in a file:
import { table } from "@el3um4s/node-mdb";
const database = "./src/__tests__/test.mdb";
const result = await table.list({ database });
console.log(result);
// ["Attività", "Users", "To Do"]
const schema = await table.schema({ database, table: "to do" });
console.log(schema);
// [
// { DESC: "Integer", NAME: "ord", TYPE: "3" },
// { DESC: "VarWChar", NAME: "to do", TYPE: "202" },
// ]
API: table
table.list({ database:string }): Promise<string[]>
: list all tables in the database (excluding system tables)table.all({ database:string} ): Promise<string[]>
: list all tables in the database (including system tables)table.system({ database:string} ): Promise<string[]>
: list all system tables in the databasetable.schema({ database:string, table:string }): Promise<Columns[]>
: get the schema of the table. Return an array of objects with the following properties:NAME: string
: name of the columnTYPE: number
: type of the columnDESC: string
: description of the column
table.read({ database:string, table:string }): Promise<GenericObject[]>
: read the table like an array of objects.table.readAllTables({ database:string, events?: ReadEvents }): Promise<TableContents[]>
: read all tables like an array of objects typeTableContents
with the following properties:TABLE_NAME: string
: name of the tableTABLE_CONTENT: GenericObject[]
: content of the tableTABLE_ROWS: number
: rows of the table You can intercept the events by passing an object with the following properties:onStart: (tables: string[]) => void
: called when the reading startsonEnd: (result: TableContents[]) => void
: called when the reading endsonTableRead: (data: TableContents) => void
: called when the table is read
table.select({ database:string, table:string, columns?:string[], where?:string }): Promise<GenericObject[]>
: read the table like an array of objects.table.count({ database:string, table:string }): Promise<number>
: count the number of rows in the table.table.listToFile({ database:string, file:string }): Promise<boolean>
: list all tables in the database (excluding system tables) and save them in filetable.exportToFileJSON({ database:string, table:string, file:string }): Promise<boolean>
: read the table like an array of objects and save it in filetable.exportToFileCSV({ database:string, table:string, file:string }): Promise<boolean>
: read the table and export to a CSV filetable.exportAllTablesToFileJSON({ database:string, folder: string, events?: ReadEvents }): Promise<TableContents[]>
: read all tables like an array of objects and save it in filetable.exportAllTablesToFileCSV({ database:string, folder: string, events?: ReadEvents }): Promise<TableContents[]>
: read all tables like an array of objects and export to a CSV file
API: query
query.sql({ database:string, sql:string }): Promise<GenericObject[]>
: execute a SQL query and return an array of objects.query.sqlToFileJSON({ database:string, sql:string, file:string }): Promise<boolean>
: execute a SQL query and save the result in filequery.sqlToFileCSV({ database:string, sql:string, file:string }): Promise<boolean>
: execute a SQL query and and export the result to a CSV file