0.0.6 • Published 8 years ago

dbffile-th v0.0.6

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

DBFFile

Summary

Read and write .dbf (dBase III) files in Node.js:

  • Supports C (string) , N (numeric) , L (logical) and D (date) field types
  • Can open an existing .dbf file
    • Can access all field descriptors
    • Can access total record count
    • Can read records in arbitrary-sized batches
    • Supports very large files
  • Can create a new .dbf file
    • Can use field descriptors from a hash of from another instance
  • Can append records to an existing .dbf file
    • Supports very large files
  • All operations are asyncronous and return a promise

Installation

npm install dbffile-th

Example: reading a .dbf file

var DBFFile = require('dbffile-th');

DBFFile.open('[full path to .dbf file]', 'utf8')
    .then(dbf => {
        console.log(`DBF file contains ${dbf.recordCount} rows.`);
        console.log(`Field names: ${dbf.fields.map(f => f.name)}`);
        return dbf.readRecords(100);
    })
    .then(rows => rows.forEach(row => console.log(row)))
    .catch(err => console.log('An error occurred: ' + err));

Example: writing a .dbf file

var DBFFile = require('dbffile-th');

var fieldDescriptors = [
    { name: 'fname', type: 'C', size: 255 },
    { name: 'lname', type: 'C', size: 255 }
];

var rows = [
    { fname: 'Joe', lname: 'Bloggs' },
    { fname: 'Mary', lname: 'Smith' }
];

DBFFile.create('[full path to .dbf file]', fieldDescriptors, 'utf8')
    .then(dbf => {
        console.log('DBF file created.');
        return dbf.append(rows, 'utf8');
    })
    .then(() => console.log(rows.length + ' rows added.'))
    .catch(err => console.log('An error occurred: ' + err));

API

The module exports two functions and a class, as follows:

/** Open an existing DBF file. */
function open(path: string, encoding: string): Promise<DBFFile>;


/** Create a new DBF file with no records. */
function create(path: string, fields: Field[], encoding: string): Promise<DBFFile>;


/** Represents a DBF file. */
class DBFFile {

    /** Full path to the DBF file. */
    path: string;

    /** Total number of records in the DBF file (NB: includes deleted records). */
    recordCount: number;

    /** Metadata for all fields defined in the DBF file. */
    fields: { name: string; type: string; size: number; decs: number; }[];

    /** Append the specified records to this DBF file. */
    append(records: any[], encoding: string): Promise<DBFFile>;

    /** read some specific rows from the dbf file. **/
    readRecords(maxRows?: number): Promise<any[]>;
}
0.0.6

8 years ago

0.0.5

8 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago