Zum Inhalt springen

ODBC-API unter macOS

  1. Ein Driver Manager ist erforderlich, um die Kommunikation zwischen Anwendungen und dem ODBC-Treiber zu steuern. DuckDB unterstützt unixODBC, einen vollständigen ODBC-Driver-Manager für macOS und Linux. Benutzer können ihn über die Kommandozeile mit Homebrew installieren:

    Terminal window
    brew install unixodbc
  2. DuckDB veröffentlicht einen universellen [ODBC-Treiber für macOS](https://github.com/duckdb/duckdb-odbc/releases/download/v1.5.5.0/duckdb_odbc-osx-universal.zip) (unterstützt Intel- und Apple-Silicon-CPUs). Zum Herunterladen führen Sie aus:
    Terminal window
    wget https://github.com/duckdb/duckdb-odbc/releases/download/v1.5.5.0/duckdb_odbc-osx-universal.zip
  3. Das Archiv enthält das Artefakt libduckdb_odbc.dylib. Um es in ein Verzeichnis zu entpacken, führen Sie aus:

    Terminal window
    mkdir duckdb_odbc && unzip duckdb_odbc-osx-universal.zip -d duckdb_odbc
  4. Es gibt zwei Wege, den ODBC-Treiber zu konfigurieren: entweder durch Initialisierung über die Konfigurationsdateien oder durch Verbinden mit SQLDriverConnect. Eine Kombination aus beiden ist ebenfalls möglich.

    Darüber hinaus unterstützt der ODBC-Treiber alle in DuckDB enthaltenen Konfigurationsoptionen.

    Wenn eine Konfiguration sowohl in der an SQLDriverConnect übergebenen Verbindungszeichenfolge als auch in der Datei odbc.ini gesetzt ist, hat die an SQLDriverConnect übergebene Vorrang.

    Details zu den Konfigurationsparametern finden Sie auf der Seite zur ODBC-Konfiguration.

  5. Nach der Konfiguration können Sie die Installation mit einem ODBC-Client prüfen. unixODBC verwendet das Kommandozeilenwerkzeug isql.

    Verwenden Sie den in odbc.ini definierten DSN als Parameter von isql.

    Terminal window
    isql DuckDB
    +---------------------------------------+
    | Connected! |
    | |
    | sql-statement |
    | help [tablename] |
    | echo [string] |
    | quit |
    | |
    +---------------------------------------+
    SQL> SELECT 42;
    +------------+
    | 42 |
    +------------+
    | 42 |
    +------------+
    SQLRowCount returns -1
    1 rows fetched