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](#download-and-install-the-odbc-driver) - [Configure a data source](#configure-a-data-source) - [Connect and query from applications](#connect-and-query-from-applications) - [Use ODBC with programming languages](#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 driver Download the Arrow Flight SQL ODBC driver for your operating system: #### Windows (x64) Download the Arrow Flight SQL ODBC driver #### macOS and Linux For macOS and Linux, download from Dremio: - [**macOS (Universal)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-universal.pkg) - [**Linux (x86_64)**](https://download.dremio.com/arrow-flight-sql-odbc-driver/arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz) > [!Note] > For more information about the Arrow Flight SQL ODBC Driver, see the [Dremio documentation](https://docs.dremio.com/current/client-applications/drivers/arrow-flight-sql-odbc-driver/). ### Install on Windows #### Using PowerShell (recommended) Run the following PowerShell commands to download and install: {{% code-placeholders "YOUR_USER" %}} ```powershell # Download the driver Invoke-WebRequest -Uri "https://docs.influxdata.com/downloads/arrow-flight-sql-odbc-0.9.7.1195-win64.msi" ` -OutFile "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi" # Mark as trusted Unblock-File "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi" # Install Start-Process msiexec.exe -Wait -ArgumentList '/i "C:\Users\YOUR_USER\Downloads\arrow-flight-sql-odbc-0.9.7.1195-win64.msi"' ``` {{% /code-placeholders %}} Replace the following: - {{% code-placeholder-key %}}`YOUR_USER`{{% /code-placeholder-key %}}: Your Windows username #### Manual installation 1. Run the downloaded `.msi` installer 2. Follow the installation wizard using default settings 3. Complete the installation #### Verify installation 1. Open **ODBC Data Source Administrator (64-bit)** 2. Navigate to the **Drivers** tab 3. Verify **Arrow Flight SQL ODBC Driver** appears in the list ### Install on macOS 1. Run the downloaded `.pkg` installer 2. Follow the installation prompts 3. Enter your administrator password when prompted 4. Complete the installation To verify installation: ```bash odbcinst -q -d ``` The output should include **Arrow Flight SQL**. ### Install on Linux 1. Extract the downloaded archive: ```bash tar -xzf arrow-flight-sql-odbc-LATEST-linux-x86_64.tar.gz ``` 2. Install the driver (installation location may vary by distribution): ```bash sudo mkdir -p /opt/arrow-flight-sql-odbc sudo cp -r lib /opt/arrow-flight-sql-odbc/ ``` 3. Configure the driver in `/etc/odbcinst.ini`: ```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: ```bash 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 1. Open **ODBC Data Source Administrator (64-bit)** 2. Navigate to the **System DSN** or **User DSN** tab 3. Click **Add** 4. Select **Arrow Flight SQL ODBC Driver** and click **Finish** 5. 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 6. Click **Test** to verify the connection 7. 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" %}} ```ini [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" %}} ```ini [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" %}} ```ini [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" %}} ```ini [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: ```bash 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](/influxdb3/version/visualize-data/powerbi/). ### Tableau See [Use Tableau to visualize data](/influxdb3/version/visualize-data/tableau/). ### Excel 1. Open Excel 2. Go to **Data** > **Get Data** > **From Other Sources** > **From ODBC** 3. Select your InfluxDB data source 4. Enter credentials if prompted 5. Select tables and load data ### DBeaver 1. Create a new database connection 2. Select **ODBC** as the connection type 3. Configure the connection: - **Database/Schema**: Your InfluxDB database - **ODBC DSN**: Your configured data source name 4. Test and save the connection ## Use ODBC with programming languages ### Python with pyodbc ```python 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 ```r 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` ```csharp 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" %}} ```ini [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" %}} ```ini [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" %}} ```ini [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" %}} ```ini [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 -d` to list installed drivers - Verify **Arrow Flight SQL** appears in the output - Check `/etc/odbcinst.ini` for 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 %}} - Ensure `UseEncryption` is 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 `AuthToken` parameter (not `Token`) - {{% 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](/influxdb3/version/reference/sql/) for supported features - For large result sets, consider adding `LIMIT` clauses ### 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