Using the kodbc driver
This section describes how to use the sample c
program 'csvupload' to send the data from the sample.csv file to the sdk_sample_assembly
inside kdb Insights Enterprise, which can be downloaded using the instructions here.
Downloading
The kodbc driver samples-${VERSION}.zip file, downloaded from the kdb Insights Nexus registry, contains the following files:
csvupload.c
- csv upload source code.CMakeLists.txt
- cmake file.sample.csv
- sample data based on the sdk_sample_assembly which can be downloaded using the instructions here.
Note
Before using the sample program you need to download and install the kodbc driver as described here.
The source code can be taken and edited for use inside your applications.
Prerequisites
Before building the sample program the following pre-requisites are required:
- kodbc driver
unixodbc
packageunixodbc-dev
packagecmake
packagelibcsv-dev
packagelibcsv
package
Building
Once these are installed:
- Extract the files from the zip file
- Move to the extracted folder
-
Build the application:
cmake --clean-first --build . && make
Application parameters
-c str
, ODBC connection string-t str
, Table name-s str
, Schema (e.g., field1:datatype,field2:datatype)
Note
The schema must match that defined in the pipeline assembly. For the SDK, described here, the schema definition is as follows: sensorID:int,captureTS:ts,readTS:ts,valFloat:float,qual:int,alarm:int
ODBC connection string parameters
The following list includes the recognized ODBC connection string parameters that can be included in the -c parameter:
parameter | default | description |
---|---|---|
DRIVER |
none | Path to the driver file. |
URL |
none | URL of the configuration file. In the form: 'https://{INSIGHTS_HOSTNAME}/informationservice/details/{KC_CLIENT_ID}'. |
RTDIR |
/tmp/rt | Path to the RT log directory. |
CONF_SLEEP |
5000 | Time in ms to sleep between fetches of the configuration details from the Information Service. |
CONF_MAX_AGE |
300000 | Maximum age of configuration details in ms. After this amount of time, if still unable to fetch a new configuration, the connection is considered to be broken and any subsequent attempts to send data to kdb Insights Enterprise will fail with Not connected error. |
LOCAL_PERSIST_PERIOD |
600000 | Local persistence period (in milliseconds) |
TIMEOUT |
2000 | Connection timeout in ms. |
LOG |
info | Log level (example: "info", "err", "warn") |
The URL
is mandatory, as well as one of the following: DRIVER
or DSN
.
Supported data types
The following data types are supported by the sample application:
type | schema notation | example |
---|---|---|
string | string | name |
symbol | symbol | LLOY |
int | int | 1 |
byte | byte | 0 |
long | long | 200000 |
float | float | 1.2345 |
timestamp | ts | 2000.01.01D00:00:00.000000000 |
Publishing data using csvupload
In the example below the environment variables INSIGHTS_HOSTNAME and INSIGHTS_CLIENT_URL have been initialized.
DSN="DRIVER=/usr/local/lib/kodbc/libkodbc.so;URL=https://{INSIGHTS_HOSTNAME}/informationservice/details/{KC_CLIENT_ID}"
Schema="sensorID:int,captureTS:ts,readTS:ts,valFloat:float,qual:byte,alarm:byte"
Table="trace"
./csvupload -c "$DSN" -t "$Table" -s "$Schema" < sample.csv
Note
The path to the DRIVER
may be different in your environment.