This is the implementation of the SAP HANA data handler for MindsDB.
SAP HANA, where HANA stands for High-performance ANalytic Appliance, is a multi-model database that stores data in its memory instead of keeping it on a disk. The column-oriented in-memory database design used by SAP HANA allows users to run advanced analytics alongside high-speed transactions in a single system.
Prerequisites
Before proceeding, ensure the following prerequisites are met:
- Install MindsDB locally via Docker or use MindsDB Cloud.
- To connect SAP HANA to MindsDB, install the required dependencies following this instruction.
- Install or ensure access to SAP HANA.
Implementation
This handler is implemented using hdbcli, the Python driver for SAP HANA.
The required arguments to establish a connection are as follows:
- hostis the host name or IP address of the SAP HANA instance.
- portis the port number of the SAP HANA instance.
- userspecifies the user name.
- passwordspecifies the password for the user.
- schemasets the current schema, which is used for identifiers without a defined schema.
Usage
You can use the below SQL statements to create a schema in SAP HANA called MINDSDB and a table called TEST.
CREATE SCHEMA MINDSDB;
CREATE TABLE MINDSDB.TEST
(
    ID          INTEGER NOT NULL,
    NAME        NVARCHAR(1),
    DESCRIPTION NVARCHAR(1)
);
CREATE UNIQUE INDEX MINDSDB.TEST_ID_INDEX
    ON MINDSDB.TEST (ID);
ALTER TABLE MINDSDB.TEST
    ADD CONSTRAINT TEST_PK
        PRIMARY KEY (ID);
INSERT INTO MINDSDB.TEST
VALUES (1, 'h', 'w');
CREATE DATABASE sap_hana_trial
WITH
    ENGINE = 'hana',
    PARAMETERS = {
        "user": "DBADMIN",
        "password": "password",
        "host": "<uuid>.hana.trial-us10.hanacloud.ondemand.com",
        "port": "443",
        "schema": "MINDSDB",
        "encrypt": true
    };
The above example assumes usage of SAP HANA Cloud, which requires the encrypt parameter to be set to true and uses port 443.
SELECT *
FROM sap_hana_trial.test;