Client applications
How to work with Cassandra data in some example applications and programming languages:
Microsoft Access
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Access.
-
Choose one of the following ways to work with your Cassandra data in Access.
Importing a table
-
Open your Microsoft Access database.
-
Choose External Data.
-
In the New Data Source list, choose From Other Sources > ODBC Database.
-
In the Get External Data screen, choose Import the source data into a new table in the current database, and choose OK.
-
In the Select Data Source dialog box, choose the Machine Data Source tab.
-
Choose your Easysoft ODBC-Cassandra Driver ODBC data source from the Machine Data Source list, and then choose OK.
-
In the Import Objects dialog box, choose the tables you want to import, and then choose OK.
Microsoft Power BI
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Power BI Desktop.
-
In Power BI Desktop, choose Get data from another source.
-
In the Get Data dialog box, choose ODBC, and then choose Connect.
-
In the From ODBC dialog box, choose your Cassandra data source, and then choose OK.
-
Enter your database user name and password when prompted.
If you make a mistake when entering the user name and password, cancel the connection process. Then in Power BI Desktop Options and Settings, edit the data source. Specify the correct user name or password in the data source credentials dialog box. Otherwise, Power BI Desktop will continue to use the cached incorrect credentials.
If you do not normally need to enter a user name and password, enter some dummy strings in the spaces provided. -
In the Navigator dialog box, choose the tables you want to analyse in Power BI Desktop, and then choose Load.
Your Cassandra data is now available to use in Power BI visualisations.
Microsoft SQL Server
-
Install the Easysoft ODBC-Cassandra Driver on same computer as SQL Server.
-
In Microsoft SQL Server Management Studio, connect to the SQL Server instance you want to create the linked server against.
You need to log on with an account that is a member of the SQL Server
sysadmin
fixed server role to create a linked server. -
Right-click Server Objects. From the pop-up menu choose New > Linked Server.
-
In the Linked server box, enter "Cassandra".
-
From the Provider list, choose Microsoft OLE DB Provider for ODBC drivers.
-
In the Data source box, enter the name of your Cassandra data source, and then choose OK.
SQL Server verifies the linked server by testing the connection.
-
If you get the error "Specified driver could not be loaded due to system error 126: The specified module could not be found," choose Yes when prompted whether to keep the linked server. You need to restart your SQL Server instance before you can use the linked server. If SQL Server was already running when you installed the Easysoft ODBC-Cassandra Driver, it will not have the latest version of the System
Path
environment variable. The Easysoft ODBC-Cassandra Driver Setup program adds entries for the driver to the SystemPath
. Restarting the instance makes these changes available to SQL Server, allowing it to load the Easysoft ODBC-Cassandra Driver. -
If you made a mistake when specifying the Easysoft ODBC-Cassandra Driver, you get the error "Data source name not found and no default driver specified." If you get this error, choose No when prompted whether to keep the linked server and edit the value in the Data source box.
Right-click your linked server and choose Properties. In Security, choose Be made using this security context, and enter your Cassandra user name and password in the spaces provided. In Server Options, set both RPC and RPC Out to True
-
-
You can query your Easysoft ODBC-Cassandra Driver data either by using a:
-
Pass-through query in an
OPENQUERY
function. For example:SELECT * FROM OPENQUERY([Cassandra], 'SELECT * FROM Customers') EXEC ('INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (''Devlin'' , ''Michaels'' , ''Kingston'' , ''2015558966'' , ''PowerGroup'')') AT Cassandra
SQL Server sends pass-through queries as uninterpreted query strings to the Cassandra. This means that SQL Server does not apply any kind of logic to the query or try to estimate what that query will do.
-
Oracle
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Oracle.
-
Follow the instructions for your Oracle platform.
Connecting Cassandra to Oracle on Windows
-
Create a DG4ODBC init file on your Oracle machine. To do this, change to the
%ORACLE_HOME%\hs\admin
directory. Create a copy of the fileinitdg4odbc.ora
. Name the new fileinitCassandra.ora
.In these instructions, replace %ORACLE_HOME%
with the location of your OracleHOME
directory. For example,C:\app\product\21c\homes\OraDB21Home1
. -
Ensure these parameters and values are present in your init file:
HS_FDS_CONNECT_INFO = "Cassandra"
Replace
Cassandra
with the name of your Easysoft ODBC-Cassandra Driver data source. -
Comment out the line that enables DG4ODBC tracing. For example:
#HS_FDS_TRACE_LEVEL = <trace_level>
-
Add an entry to
%ORACLE_HOME%\network\admin\listener.ora
that creates aSID_NAME
for DG4ODBC. For example:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=Cassandra) (ORACLE_HOME=%ORACLE_HOME%) (PROGRAM=dg4odbc) ) )
-
Add a DG4ODBC entry to
%ORACLE_HOME%\network\admin\tnsnames.ora
that specifies theSID_NAME
created in the previous step. For example:Cassandra = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = Cassandra) ) (HS = OK) )
Replace
oracle_host
with the host name of your Oracle machine. -
Start (or restart) the Oracle Listener:
cd %ORACLE_HOME%\bin lsnrctl stop lsnrctl start
-
Connect to your Oracle database in SQL*Plus.
-
In SQL*Plus, create a database link for Cassandra. For example:
CREATE PUBLIC DATABASE LINK CassandraLink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" USING 'Cassandra';
Replace
dbuser
anddbpassword
with your backend user name and password, if applicable. -
Try querying and updating your Cassandra data. For example:
SELECT "Surname" FROM "Customers"@CassandraLink; DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (''Devlin'', ''Michaels'', ''Kingston'', ''2015558966'', ''PowerGroup'')'); END; / DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('UPDATE "Customers" SET "Surname" = ''Jones'' WHERE "CompanyName" = ''PowerGroup'''); END; / DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('DELETE from "Customers" WHERE CompanyName = ''PowerGroup'''); END; /
Notes
-
If you have problems connecting to Cassandra from Oracle, enable DG4ODBC tracing and check the trace files written to the
%ORACLE_HOME%\hs\trace
directory. To enable DG4ODBC tracing, add the lineHS_FDS_TRACE_LEVEL = DEBUG
toinitCassandra.ora
and then start or restart the Oracle listener. If thetrace
directory does not exist, create it. -
If you enable ODBC Driver Manager tracing, but do not get a log file in the location you specify, try looking in the top-level folder (for example,
C:\SQL.log
). Alternatively, in ODBC Data Source Administrator, change the trace file location to the WindowsTEMP
directory.
Connecting Cassandra to Oracle on Linux and UNIX
-
Create a DG4ODBC init file on your Oracle machine. To do this, change to the
$ORACLE_HOME\hs\admin
directory. Create a copy of the fileinitdg4odbc.ora
. Name the new fileinitCassandra.ora
.In these instructions, replace $ORACLE_HOME
with the location of your OracleHOME
directory. For example,/u01/app/oracle/product/21c/dbhome_1
. -
Ensure these parameters and values are present in your init file:
HS_FDS_CONNECT_INFO = "Cassandra"
Replace
Cassandra
with the name of your Easysoft ODBC-Cassandra Driver data source. -
Comment out the line that enables DG4ODBC tracing. For example:
#HS_FDS_TRACE_LEVEL = <trace_level>
-
Add an entry to
$ORACLE_HOME/network/admin/listener.ora
that creates aSID_NAME
for DG4ODBC. For example:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=Cassandra) (ORACLE_HOME=$ORACLE_HOME) (PROGRAM=dg4odbc) (ENVS=LD_LIBRARY_PATH = /usr/local/easysoft/unixODBC/lib: /usr/local/easysoft/lib) ) )
Replace oracle_home_directory with the value of $ORACLE_HOME. For example,
/u01/app/oracle/product/21c/dbhome_1
. -
Add a DG4ODBC entry to
$ORACLE_HOME/network/admin/tnsnames.ora
that specifies theSID_NAME
created in the previous step. For example:Cassandra = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = Cassandra) ) (HS = OK) )
Replace
oracle_host
with the host name of your Oracle machine. -
Start (or restart) the Oracle Listener:
cd $ORACLE_HOME/bin ./lsnrctl stop ./lsnrctl start
-
Connect to your Oracle database in SQL*Plus.
-
In SQL*Plus, create a database link for Cassandra. For example:
CREATE PUBLIC DATABASE LINK CassandraLink CONNECT TO "dbuser" IDENTIFIED BY "dbpassword" USING 'Cassandra';
Replace
dbuser
anddbpassword
with your backend user name and password, if applicable. -
Try querying and updating your Cassandra data. For example:
SELECT "Surname" FROM "Customers"@CassandraLink; DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (''Devlin'', ''Michaels'', ''Kingston'', ''2015558966'', ''PowerGroup'')'); END; / DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('UPDATE "Customers" SET "Surname" = ''Jones'' WHERE "CompanyName" = ''PowerGroup'''); END; / DECLARE num_rows integer; BEGIN num_rows:=DBMS_HS_PASSTHROUGH.EXECUTE_IMMEDIATE@CassandraLink ('DELETE from "Customers" WHERE CompanyName = ''PowerGroup'''); END; /
Notes
-
If you have problems connecting to Cassandra from Oracle, enable DG4ODBC tracing and check the trace files written to the
$ORACLE_HOME/hs/trace
directory. To enable DG4ODBC tracing, add the lineHS_FDS_TRACE_LEVEL = DEBUG
toinitCassandra.ora
and then start or restart the Oracle listener. If thetrace
directory does not exist, create it.
LibreOffice
-
Install the Easysoft ODBC-Cassandra Driver on same computer as LibreOffice.
-
Choose File > New > Database.
-
Choose Connect to an existing database.
-
Choose ODBC in the list, and then choose Next.
-
Choose Browse, double-click your data source, and then choose Next.
-
If your database requires a database user name, enter it in the User name box. If this user needs to supply a password choose the Password required check box.
-
Choose Finish.
-
Save the database when prompted.
The database opens in a new Base window. From here you can access your data.
-
In the left pane of the database window, choose the Tables icon to display a hierarchy of tables. Enter the database password if prompted, and then choose OK.
-
To retrieve the data in a table, in the Tables pane, double-click a table.
-
Choose the Queries icon to create a query.
Use any of the methods listed in the Tasks pane to create a query.
Go
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Go.
-
Install the odbc package for Go:
go mod init test go get github.com/alexbrainman/odbc
-
Create and then use Go to run this script, which retrieves some Cassandra data:
package main import ( _ "github.com/alexbrainman/odbc" "database/sql" "log" ) func main() { // Replace the DSN value with the name of your ODBC data source. db, err := sql.Open("odbc", "DSN=Cassandra") if err != nil { log.Fatal(err) } var ( name string ) rows, err := db.Query("SELECT Surname FROM Customers") if err != nil { log.Fatal(err) } defer rows.Close() for rows.Next() { err := rows.Scan(&name) if err != nil { log.Fatal(err) } log.Println(name) } err = rows.Err() if err != nil { log.Fatal(err) } defer db.Close() }
Node.js
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Node.js.
-
Install the odbc module for Node.js:
npm install odbc
-
Create and then use Node.js to run this script, which retrieves some Cassandra data:
const odbc = require('odbc'); // Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver // data source. const connection = odbc.connect('DSN=Cassandra', (error, connection) => { connection.query('SELECT Surname FROM Customers', (error, result) => { if (error) { console.error(error) } console.log(result); }); });
-
This script retrieves the tables and views in your Easysoft ODBC-Cassandra Driver data source:
const odbc = require('odbc'); const connection = odbc.connect('DSN=Cassandra', (error, connection) => { connection.tables(null, null, null, null, (error, result) => { if (error) { return; } const util = require('util'); console.log(util.inspect(result, {maxArrayLength: null, depth:null})) }); });
-
This script retrieves the names of the columns in these tables and views:
const odbc = require('odbc'); const connection = odbc.connect('DSN=Cassandra', (error, connection) => { connection.columns(null, null, null, null, (error, result) => { if (error) { return; } const util = require('util'); console.log(util.inspect(result, {maxArrayLength: null, depth:null})) }); });
Perl
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Perl.
-
Check whether your Perl distribution supports ODBC:
perl -e 'use DBD::ODBC;'
-
Do one of the following:
-
If you get no output, your Perl distribution supports ODBC. Skip to the next step.
-
If you get:
Can't locate DBD/ODBC.pm
you need to install DBD::ODBC before you can use the Easysoft ODBC-Cassandra Driver to connect to Cassandra.
-
-
Create and then use Perl to run this script, which retrieves some Cassandra data:
use strict; use DBI; # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sql = "SELECT Surname FROM Customers"; my $sth = $dbh->prepare($sql) or die "Can't prepare statement: $DBI::errstr"; $sth->execute(); my($Col); # Fetch and display the result set values. while(($Col) = $sth->fetchrow()){ print("$Col\n"); } $dbh->disconnect if ($dbh);
-
This script retrieves the tables and views in your Easysoft ODBC-Cassandra Driver data source:
use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sth = $dbh->table_info() or die "Can't prepare statement: $DBI::errstr"; my @row; while (@row = $sth->fetchrow_array) { print join(", ", @row), "\n"; } $dbh->disconnect if ($dbh);
-
This script retrieves the names of the columns in these tables and views:
use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sth = $dbh->column_info('','','','') or die "Can't prepare statement: $DBI::errstr"; my @row; while (@row = $sth->fetchrow_array) { print join(", ", @row), "\n"; } $dbh->disconnect if ($dbh);
-
These scripts insert, update, and then delete some Cassandra data:
use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sth = $dbh->prepare(q/INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (?, ?, ?, ?, ?)/) or die "Can't prepare statement: $DBI::errstr"; $sth->execute('Devlin', 'Michaels', 'Kingston', '2015558966', 'PowerGroup'); $dbh->disconnect if ($dbh); use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sth = $dbh->prepare('UPDATE Customers SET Surname = \'Jones\' WHERE CompanyName = ?') or die "Can't prepare statement: $DBI::errstr"; $sth->execute('PowerGroup'); $dbh->disconnect if ($dbh); use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:Cassandra'); my $sth = $dbh->prepare('DELETE FROM Customers WHERE CompanyName = ?') or die "Can't prepare statement: $DBI::errstr"; $sth->execute('PowerGroup'); $dbh->disconnect if ($dbh);
Further information
PHP
-
Install the Easysoft ODBC-Cassandra Driver on same computer as PHP.
-
Check whether your PHP distribution supports ODBC. In
php.ini
, make sure there is no comment character (;
) before theextension_dir
andextension=odbc
settings (;extension_dir=directory
becomesextension_dir=directory
and;extension=odbc
becomesextension=odbc
). -
Create and then use PHP to run this script, which retrieves some Cassandra data:
<?php // Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. // If your database requires a user name and password, supply them in the odbc_connect_call. $con = odbc_connect("Cassandra", "", ""); $stmt = odbc_exec($con, "SELECT * FROM Customers"); while ($row = odbc_fetch_array($stmt)) { echo "Surname = ", $row["Surname"], "\n"; } odbc_close($con); ?>
-
This script retrieves the tables and views in your Easysoft ODBC-Cassandra Driver data source:
<?php $con = odbc_connect("Cassandra", "", ""); $tables = odbc_tables($con); while (($row = odbc_fetch_array($tables))) { print_r($row); } odbc_close($con); ?>
-
This script retrieves the names of the columns in these tables and views:
<?php $con = odbc_connect("Cassandra", "", ""); $columns = odbc_columns($con); while (($row = odbc_fetch_array($columns))) { print_r($row); } odbc_close($con); ?>
-
These scripts insert, update, and then delete some Cassandra data:
<?php $cnx = odbc_connect("Cassandra", "", ""); $stmt = odbc_prepare($cnx, "INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (?, ?, ?, ?, ?)"); $success = odbc_execute($stmt, array('Devlin', 'Michaels', 'Kingston', '2015558966', 'PowerGroup')); odbc_close($cnx); ?> <?php $cnx = odbc_connect("Cassandra", "", ""); $stmt = odbc_prepare($cnx, "UPDATE Customers SET Surname = 'Jones' WHERE CompanyName = ?"); $success = odbc_execute($stmt, array('PowerGroup')); odbc_close($cnx); ?> <?php $cnx = odbc_connect("Cassandra", "", ""); $stmt = odbc_prepare($cnx, "DELETE FROM Customers WHERE CompanyName = ?"); $success = odbc_execute($stmt, array('PowerGroup')); odbc_close($cnx); ?>
Further information
Python
-
Install the Easysoft ODBC-Cassandra Driver on same computer as Python.
-
Check whether your Python distribution supports ODBC.
pip list
If you don’t have pip installed:
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py python get-pip.py
-
Do one of the following:
-
If the output contains
pyodbc
, your Python distribution supports ODBC. Skip to the next step. -
If the output does not contain
pyodbc
, use pip to install this module:pip install pyodbc
-
-
Create and then use Python to run this script, which retrieves some Cassandra data:
import pyodbc # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() sql = "SELECT Surname FROM Customers" cursor.execute(sql) rows = cursor.fetchall() for row in rows: print(row.Surname) exit()
-
This script retrieves the tables and views in your Easysoft ODBC-Cassandra Driver data source:
import pyodbc # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() cursor.tables() rows = cursor.fetchall() for row in rows: print(row.table_name) exit()
-
This script retrieves the names of the columns in these tables and views:
import pyodbc # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() cursor.columns() rows = cursor.fetchall() for row in rows: print(row.table_name, row.column_name) exit()
-
These scripts insert, update, and then delete some Cassandra data:
import pyodbc cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() sql = "INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES (?, ?, ?, ?, ?)" cursor.execute(sql, 'Devlin', 'Michaels', 'Kingston', '2015558966', 'PowerGroup') cursor.commit() exit()
import pyodbc cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() sql = "UPDATE Customers SET Surname = 'Jones' WHERE CompanyName = ?" cursor.execute(sql, 'PowerGroup') cursor.commit() exit()
import pyodbc cnxn = pyodbc.connect("DSN=Cassandra") cursor = cnxn.cursor() sql = "DELETE FROM Customers WHERE CompanyName = ?" cursor.execute(sql, 'PowerGroup') cursor.commit() exit()
Further information
R
-
Install the Easysoft ODBC-Cassandra Driver on same computer as R.
-
In R Console, check whether your R distribution supports ODBC.
library("RODBC")
-
Do one of the following:
-
If you get no output, you have the ODBC library for R. Skip to the next step.
-
If you get an "there is no package" error, install the ODBC library for R:
install.packages("RODBC")
-
-
Create and then use R to run this script, which retrieves some Cassandra data:
library("RODBC") # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. ch <- odbcConnect("Cassandra") sqlQuery(ch, paste("SELECT Surname FROM Customers")) odbcClose(ch) quit()
-
This script retrieves the tables and views in your Easysoft ODBC-Cassandra Driver data source:
library("RODBC") # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. ch <- odbcConnect("Cassandra") sqlTables(ch) odbcClose(ch) quit()
-
This script retrieves the names of the columns in the specified table or view:
library("RODBC") # Replace Cassandra with the name of your Easysoft ODBC-Cassandra Driver data source. ch <- odbcConnect("Cassandra") sqlColumns(ch, sqtable="Customers") odbcClose(ch) quit()
-
These scripts insert, update, and then delete some Cassandra data:
library("RODBC") ch <- odbcConnect("Cassandra") sqlQuery(ch, paste("INSERT INTO Customers (Surname, GivenName, City, Phone, CompanyName) VALUES ('Devlin', 'Michaels', 'Kingston', '2015558966', 'PowerGroup')")) odbcClose(ch) quit() library("RODBC") ch <- odbcConnect("Cassandra") sqlQuery(ch, paste("UPDATE Customers SET Surname = 'Jones' WHERE CompanyName = 'PowerGroup'")) odbcClose(ch) quit() library("RODBC") ch <- odbcConnect("Cassandra") sqlQuery(ch, paste("DELETE FROM Customers WHERE CompanyName = 'PowerGroup'")) odbcClose(ch) quit()