node.js connection to SAP HANA using node-odbc.
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
tests no need for async at this point. Aug 28, 2013
.gitignore initial commit, test.js creates a HANA connection and queries SAPLANE… Aug 27, 2013
LICENSE adding SAP to license Aug 28, 2013
package.json 0.1.4 Sep 4, 2013


node.js library that is a thin wrapper around node-odbc to connect to


odbc backend

node-odbc will need a odbc driver to connect to HANA. I have used unixodbc so far. For using it make sure you setup a data source (DSN) that points to a HANA instance. Here is a description for how to setup an odbc connection on Ubuntu.

hana-odbc from npm

hana-odbc is on npm, to install it run

$ npm install hana-odbc

If a corporate firewall is bugging npm try

$ npm --proxy http://username:password@proxyservername:port --strict-ssl false install

Or: from github (alternative to npm install above)

To install from github do

$ git clone
$ cd node-hana-odbc
$ npm install


The test.js file shows how to connect to and query a database. It uses the SFLIGHT schema by default. To test if it works make sure your DB includes this schema and run

$ node test.js username password

server.js shows how you can provide a HTTP interface with a expressjs-like backend.

To just use the programatic interface require hana-interface.js ast it is done in test.js and server.js.



Returns an odbc session object for interacting with a HANA database.


  • dsn - Specifies the data source and access parameters.


var session = hanaInterface.getSession({dsn: "DSN=hana;UID=UserName;PWD=Password"});


Establishes a connection to a HANA DB.


  • callback - Called when the connection was established or when an error occurs. Called with one argument, an error object.


session.connect(function(err) {
    if (err) console.error('Could not connect!');
    else console.log('Connection established!');

session.query(schema, sqlStatement, callback)

Selects a schema, sends a query, and invokes callback with the query result. If no DB connection is established yet this method will also create a connection.


  • schema - String, the name of the schema
  • sqlStatement - String, the SQL to run
  • callback - Function that takes two arguments: error and result. result is a object matching {rows: rows, hasMoreResultSets: moreResultSets}. The property rows is an array representing the rows that are the query result. hasMoreResultSets is a Bool that signals whether there are more results. If true, callback will be called again with the remaining results.


    'SFLIGHT', "select * from SAPLANE",
    function(err, results) {
        console.log(JSON.stringify(results, null, 2));
        if (!results.hasMoreResultSets)
            session.close(console.log.bind(console, 'done'));


Ends the connection to a HANA DB.


  • callback - Called when the connection was closed. Takes an error object as its single arguments that is non-null in case of a problem closing the connection.


session.close(function(err) {
    if (err) console.error('Could not close!');
    else console.log('Closed!');


MIT License