JSPM

  • Created
  • Published
  • Downloads 37084
  • Score
    100M100P100Q142107F

unixodbc bindings for node

Package Exports

  • odbc

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (odbc) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

NAME

node-odbc - An asynchronous Node interface to unixodbc and its supported drivers

SYNOPSIS

var sys  = require("sys");
var odbc = require("odbc");

var db = new odbc.Database();
db.open("DRIVER={FreeTDS};SERVER=host;UID=user;PWD=password;DATABASE=dbname", function(err)
{
    db.query("select * from table", function(err, rows, moreResultSets)
    {
        sys.debug(sys.inspect(rows));
        db.close(function(){});
    });
});

DESCRIPTION

unixODBC binding to node. Needs a properly configured odbc(inst).ini. Tested locally using the FreeTDS and Postgres drivers.

INSTALLATION

  • Make sure you have the unixODBC binaries and unixODBC headers installed and the drivers configured.
  • On ubuntu and probably most linux distros the unixODBC header files are in the unixodbc-dev package (apt-get install unixodbc-dev)
  • On OSX one can use macports.org to install unixODBC (sudo port unixODBC)

###git

git clone git://github.com/w1nk/node-odbc.git
cd node-odbc
node-waf configure build

###npm

npm install odbc

TIPS

  • If you are using the FreeTDS ODBC driver and you have column names longer than 30 characters, you should add "TDS_Version=7.0" to your connection string to retrive the full column name.

###Example

"DRIVER={FreeTDS};SERVER=host;UID=user;PWD=password;DATABASE=dbname;TDS_Version=7.0"

BUGS

None known, but there might be one ;).

COMPLETE

  • Connection Management
  • Querying
  • Database Descriptions
  • Binding Parameters (thanks to @gurzgri)

TODO

  • Option to emit on each record to avoid collecting the entire dataset first and increasing memory usage
  • More error handling.
  • Tests
  • SQLGetData needs to support retrieving multiple chunks and concatenation in the case of large column values

ACKNOWLEDGEMENTS

  • orlandov's node-sqlite binding was the framework I used to figure out using eio's thread pool to handle blocking calls since non blocking odbc doesn't seem to appear until 3.8.

AUTHORS

Lee Smith (notwink@gmail.com)

Dan VerWeire (dverweire@gmail.com)