14 KiB
Use the Arrow Flight SQL ODBC driver to execute SQL queries against {{% product-name %}} from ODBC-compatible applications and programming languages.
ODBC (Open Database Connectivity) is a standard API for accessing database management systems. The Arrow Flight SQL ODBC driver enables ODBC-compatible applications to connect to {{% product-name %}} and query data using SQL.
- Download and install the ODBC driver
- Configure a data source
- Connect and query from applications
- Use ODBC with programming languages
Download and install the ODBC driver
{{% product-name %}} uses the Arrow Flight SQL ODBC driver to enable ODBC connectivity.
Download the Arrow Flight SQL ODBC driver for your operating system:
Install on Windows
Using PowerShell (recommended)
Run the following PowerShell commands:
{{% code-placeholders "YOUR_USER" %}}
# Download the driver
Invoke-WebRequest -Uri "https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-win64.msi" `
-OutFile "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-win64.msi"
# Mark as trusted
Unblock-File "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-win64.msi"
# Install
Start-Process msiexec.exe -Wait -ArgumentList '/i "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-win64.msi"'
{{% /code-placeholders %}}
Replace the following:
- {{% code-placeholder-key %}}
YOUR_USER{{% /code-placeholder-key %}}: Your Windows username
Manual installation
- Run the downloaded
.msiinstaller - Follow the installation wizard using default settings
- Complete the installation
Verify installation
- Open ODBC Data Source Administrator (64-bit)
- Navigate to the Drivers tab
- Verify Arrow Flight SQL ODBC Driver appears in the list
Install on macOS
- Run the downloaded
.pkginstaller - Follow the installation prompts
- Enter your administrator password when prompted
- Complete the installation
To verify installation:
odbcinst -q -d
The output should include Arrow Flight SQL.
Install on Linux
-
Extract the downloaded archive:
tar -xzf arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz -
Install the driver (installation location may vary by distribution):
sudo mkdir -p /opt/arrow-flight-sql-odbc sudo cp -r lib /opt/arrow-flight-sql-odbc/ -
Configure the driver in
/etc/odbcinst.ini:[Arrow Flight SQL ODBC Driver] Description = Arrow Flight SQL ODBC Driver Driver = /opt/arrow-flight-sql-odbc/lib/libarrow-odbc.so
To verify installation:
odbcinst -q -d
Configure a data source
After installing the Arrow Flight SQL ODBC driver, configure a data source to connect to {{% product-name %}}.
Windows
-
Open ODBC Data Source Administrator (64-bit)
-
Navigate to the System DSN or User DSN tab
-
Click Add
-
Select Arrow Flight SQL ODBC Driver and click Finish
-
Configure the connection:
- Data Source Name: Provide a descriptive name (for example,
InfluxDB3) - Host: Your {{% product-name %}} host (for example, {{% show-in "cloud-serverless" %}}
us-west-2-1.aws.cloud2.influxdata.com{{% /show-in %}}{{% show-in "enterprise,core" %}}localhost{{% /show-in %}}{{% show-in "cloud-dedicated" %}}cluster-id.a.influxdb.io{{% /show-in %}}{{% show-in "clustered" %}}cluster-host.com{{% /show-in %}}) - Port: Your InfluxDB URL port{{% show-in "cloud-serverless,cloud-dedicated,clustered" %}}(for example,
443(HTTPS){{% /show-in %}}){{% show-in "enterprise,core" %}}8181(default){{% /show-in %}}) - Database: Your database name
- Auth Token: Your {{% show-in "cloud-dedicated, clustered" %}}{{% token-link "database" %}}{{% /show-in %}}{{% show-in "cloud-serverless" %}}{{% token-link %}}{{% /show-in %}}{{% show-in "core, enterprise" %}}{{% token-link "admin" "database" %}}{{% /show-in %}}{{% hide-in "core" %}} with query permissions for the target database{{% /hide-in %}}
- Use Encryption: Enable for HTTPS connections
- Data Source Name: Provide a descriptive name (for example,
-
Click Test to verify the connection
-
Click OK to save
macOS and Linux
Create or edit ~/.odbc.ini (user DSN) or /etc/odbc.ini (system DSN):
{{% show-in "enterprise,core" %}} {{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = localhost
Port = 8181
Database = DATABASE_NAME
AuthToken = DATABASE_TOKEN
UseEncryption = 1
{{% /code-placeholders %}} {{% /show-in %}}
{{% show-in "cloud-serverless" %}} {{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = us-west-2-1.aws.cloud2.influxdata.com
Port = 443
Database = DATABASE_NAME
AuthToken = DATABASE_TOKEN
UseEncryption = 1
{{% /code-placeholders %}} {{% /show-in %}}
{{% show-in "cloud-dedicated" %}} {{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = cluster-id.a.influxdb.io
Port = 443
Database = DATABASE_NAME
AuthToken = DATABASE_TOKEN
UseEncryption = 1
{{% /code-placeholders %}} {{% /show-in %}}
{{% show-in "clustered" %}} {{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = cluster-host.com
Port = 443
Database = DATABASE_NAME
AuthToken = DATABASE_TOKEN
UseEncryption = 1
{{% /code-placeholders %}} {{% /show-in %}}
Replace the following:
- {{% code-placeholder-key %}}
DATABASE_NAME{{% /code-placeholder-key %}}: Your database name - {{% code-placeholder-key %}}
DATABASE_TOKEN{{% /code-placeholder-key %}}: Your {{% token-link "database" %}}{{% show-in "enterprise" %}} with query permissions{{% /show-in %}}
Test the connection:
isql -v InfluxDB3
Connect and query from applications
After configuring a data source, connect from ODBC-compatible applications:
Power BI
See Use Power BI to visualize data.
Tableau
See Use Tableau to visualize data.
Excel
- Open Excel
- Go to Data > Get Data > From Other Sources > From ODBC
- Select your InfluxDB data source
- Enter credentials if prompted
- Select tables and load data
DBeaver
- Create a new database connection
- Select ODBC as the connection type
- Configure the connection:
- Database/Schema: Your InfluxDB database
- ODBC DSN: Your configured data source name
- Test and save the connection
Use ODBC with programming languages
Python with pyodbc
import pyodbc
# Connect to InfluxDB
conn = pyodbc.connect(
'DSN=InfluxDB3',
autocommit=True
)
# Create cursor
cursor = conn.cursor()
# Execute query
cursor.execute("""
SELECT
time,
temp,
location
FROM
home
WHERE
time >= now() - INTERVAL '1 hour'
ORDER BY
time DESC
""")
# Fetch results
for row in cursor.fetchall():
print(row)
# Close connection
cursor.close()
conn.close()
R with RODBC
library(RODBC)
# Connect to InfluxDB
conn <- odbcConnect("InfluxDB3")
# Execute query
result <- sqlQuery(conn, "
SELECT
time,
temp,
location
FROM
home
WHERE
time >= now() - INTERVAL '1 hour'
ORDER BY
time DESC
")
# View results
print(result)
# Close connection
odbcClose(conn)
C# with System.Data.Odbc
using System;
using System.Data.Odbc;
class Program
{
static void Main()
{
string connectionString = "DSN=InfluxDB3";
using (OdbcConnection conn = new OdbcConnection(connectionString))
{
conn.Open();
string query = @"
SELECT
time,
temp,
location
FROM
home
WHERE
time >= now() - INTERVAL '1 hour'
ORDER BY
time DESC
";
using (OdbcCommand cmd = new OdbcCommand(query, conn))
using (OdbcDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine($"{reader["time"]} - {reader["temp"]} - {reader["location"]}");
}
}
}
}
}
Connection string format
For applications that use connection strings directly:
Driver={Arrow Flight SQL ODBC Driver};Host=HOST;Port=PORT;Database=DATABASE;AuthToken=TOKEN;UseEncryption=1
Example:
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
Driver={Arrow Flight SQL ODBC Driver};Host=localhost;Port=8181;Database=DATABASE_NAME;AuthToken=DATABASE_TOKEN;UseEncryption=1
{{% /code-placeholders %}}
{{% show-in "cloud-serverless,cloud-dedicated" %}}
For {{% product-name %}}, use port 443:
{{% code-placeholders "DATABASE_NAME|DATABASE_TOKEN" %}}
Driver={Arrow Flight SQL ODBC Driver};Host=cluster-id.a.influxdb.io;Port=443;Database=DATABASE_NAME;AuthToken=DATABASE_TOKEN;UseEncryption=1
{{% /code-placeholders %}} {{% /show-in %}}
Configuration options
Connection parameters
| Parameter | Description | Default |
|---|---|---|
Host |
InfluxDB server hostname | Required |
Port |
InfluxDB server port | Required {{% show-in "core,enterprise" %}}(8181){{% /show-in %}} |
Database |
Database name | Required |
AuthToken |
Authentication token | Required |
UseEncryption |
Use encrypted connection | 1 (enabled) |
TrustedCerts |
Path to trusted CA certificates | System default |
DisableCertificateVerification |
Skip certificate verification | 0 (disabled) |
Advanced options
Add these to your DSN configuration or connection string as needed:
{{% show-in "enterprise,core" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = localhost
Port = 8181
Database = mydb
AuthToken = your-token
UseEncryption = 1
DisableCertificateVerification = 0
{{% /show-in %}}
{{% show-in "cloud-serverless" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = us-west-2-1.aws.cloud2.influxdata.com
Port = 443
Database = mydb
AuthToken = your-token
UseEncryption = 1
DisableCertificateVerification = 0
{{% /show-in %}}
{{% show-in "cloud-dedicated" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = cluster-id.a.influxdb.io
Port = 443
Database = mydb
AuthToken = your-token
UseEncryption = 1
DisableCertificateVerification = 0
{{% /show-in %}}
{{% show-in "clustered" %}}
[InfluxDB3]
Driver = Arrow Flight SQL ODBC Driver
Host = cluster-host.com
Port = 443
Database = mydb
AuthToken = your-token
UseEncryption = 1
DisableCertificateVerification = 0
{{% /show-in %}}
Troubleshooting
Driver not found
If applications cannot find the Arrow Flight SQL ODBC driver:
Windows:
- Open ODBC Data Source Administrator (64-bit)
- Navigate to the Drivers tab
- Verify Arrow Flight SQL ODBC Driver appears in the list
- If not listed, reinstall the driver
macOS/Linux:
- Run
odbcinst -q -dto list installed drivers - Verify Arrow Flight SQL appears in the output
- Check
/etc/odbcinst.inifor proper driver configuration - Ensure the driver library path is correct
Connection failures
If you cannot connect to {{% product-name %}}:
- Verify your {{% product-name %}} instance is running and accessible
- Check host and port settings:
- Local instances:
localhost:8181 - {{% show-in "cloud-serverless,cloud-dedicated" %}}{{% product-name %}}: Use your cluster URL with port
443{{% /show-in %}}
- Local instances:
- Ensure
UseEncryptionis set correctly for your connection type - Verify network connectivity and firewall rules allow connections
Authentication errors
If authentication fails:
- Confirm your token is valid and not expired
- Ensure the token is specified in the
AuthTokenparameter (notToken) - {{% show-in "enterprise" %}}Verify the token has query permissions for the target database{{% /show-in %}}
- Check that the token was copied correctly without extra spaces or characters
Query errors
If queries fail or return errors:
- Verify SQL syntax is correct for InfluxDB SQL
- Check that referenced tables (measurements) exist in the database
- Ensure column names match your schema
- Review the SQL reference for supported features
- For large result sets, consider adding
LIMITclauses
Performance issues
For slow queries or connection timeouts:
- Add time range filters to limit data scanned
- Use appropriate indexes if available
- Increase timeout values in your DSN configuration
- Monitor query execution plans for optimization opportunities