{"id":3452,"library":"dbt-exasol","title":"dbt-exasol adapter","description":"dbt-exasol is an adapter that enables dbt (data build tool) to connect and interact with an Exasol data warehouse. It provides the necessary plumbing for dbt to compile and run SQL models against Exasol, supporting its specific SQL dialect and features. Currently at v1.10.5, the library is actively maintained with frequent releases to ensure compatibility with new dbt-core versions and address Exasol-specific behaviors.","status":"active","version":"1.10.5","language":"en","source_language":"en","source_url":"https://github.com/exasol/dbt-exasol","tags":["dbt","data warehouse","ETL","Exasol","SQL","adapter"],"install":[{"cmd":"pip install dbt-exasol","lang":"bash","label":"Install dbt-exasol"}],"dependencies":[{"reason":"This adapter provides Exasol support for dbt-core. For dbt-exasol >=1.10.0 (including current v1.10.5), it requires dbt-core >=1.9.0, <1.11.0.","package":"dbt-core","optional":false},{"reason":"The adapter has specific Python version requirements. For dbt-exasol >=1.10.0 (including current v1.10.5), it requires Python ^3.10, <3.14.","package":"Python","optional":false}],"imports":[{"note":"Users typically interact with dbt-exasol via dbt CLI and profiles.yml configuration, not through direct Python imports in their dbt models. This entry refers to the package itself.","symbol":"dbt_exasol","correct":"from dbt_exasol import whatever_if_needed"}],"quickstart":{"code":"import os\n\n# This quickstart demonstrates the configuration for dbt-exasol.\n# dbt-exasol is used via the dbt CLI, not direct Python execution of models.\n\n# 1. Install dbt-exasol: pip install dbt-exasol\n\n# 2. Configure your Exasol connection in ~/.dbt/profiles.yml (or project-specific):\nprofiles_yml_example = f'''\nexasol_profile:\n  target: dev\n  outputs:\n    dev:\n      type: exasol\n      host: {{os.environ.get('EXASOL_HOST', 'your_exasol_host')}}\n      port: {{os.environ.get('EXASOL_PORT', 8563)}}\n      schema: {{os.environ.get('EXASOL_SCHEMA', 'your_schema')}}\n      user: {{os.environ.get('EXASOL_USER', 'your_user')}}\n      password: {{os.environ.get('EXASOL_PASSWORD', 'your_password')}}\n      # Optional advanced properties (e.g., for JDBC)\n      # jdbc_properties:\n      #   connectionTimeout: 10000\n'''\nprint(\"Example profiles.yml content (use environment variables for security):\")\nprint(profiles_yml_example)\n\n# 3. Create a dbt project and specify the profile (dbt_project.yml):\n# name: 'my_exasol_project'\n# version: '1.0.0'\n# config-version: 2\n# profile: 'exasol_profile'\n\n# 4. Create a simple dbt model (e.g., models/my_first_model.sql):\nsql_model_example = '''\n-- models/my_first_model.sql\n\nSELECT\n  'Hello, dbt-Exasol!' as greeting,\n  CURRENT_TIMESTAMP as current_time\nFROM DUAL;\n'''\nprint(\"\\nExample dbt model content:\")\nprint(sql_model_example)\n\n# 5. Run dbt commands from your project directory:\n#    dbt debug --target dev\n#    dbt run\n\nif __name__ == '__main__':\n    print(\"\\nThis code provides configuration examples. Actual execution is via the dbt CLI.\")\n    print(\"Please set environment variables like EXASOL_HOST, EXASOL_USER, EXASOL_PASSWORD before running dbt commands.\")\n","lang":"python","description":"To use dbt-exasol, you configure your Exasol connection details in a `profiles.yml` file, typically located in `~/.dbt/` or within your dbt project. You then define your dbt models, sources, and other resources as usual. This quickstart demonstrates the necessary `profiles.yml` and a sample model. Interaction with dbt is done through the `dbt` command-line interface (CLI)."},"warnings":[{"fix":"Always check the dbt-exasol GitHub README for the latest compatibility matrix before upgrading either dbt-exasol or dbt-core. Pin versions of dbt-core and Python in your environment.","message":"dbt-exasol has strict compatibility requirements with dbt-core and Python versions. Upgrading dbt-exasol or dbt-core independently can lead to breakage. For dbt-exasol >=1.10.0 (including 1.10.5), ensure you use dbt-core >=1.9.0, <1.11.0 and Python ^3.10, <3.14.","severity":"breaking","affected_versions":"<1.10.0"},{"fix":"Upgrade to dbt-exasol v1.10.5 or newer to benefit from fixes related to connection handling and cache consistency.","message":"Older versions of dbt-exasol might have issues with connection leaks and cache inconsistencies, particularly in multi-threaded or long-running dbt processes, potentially leading to resource exhaustion or stale data in some scenarios.","severity":"gotcha","affected_versions":"<1.10.5"},{"fix":"Upgrade to dbt-exasol v1.10.3 or newer, which includes automatic quoting for SQL keyword column names in seed operations. Alternatively, manually ensure your column names do not conflict with Exasol keywords or are explicitly quoted.","message":"Prior to v1.10.3, SQL keyword column names in seed operations might not have been automatically quoted, leading to syntax errors when loading data if column names conflicted with Exasol reserved keywords.","severity":"gotcha","affected_versions":"<1.10.3"},{"fix":"Ensure you are using dbt-exasol v1.10.0 or newer if your project utilizes dbt snapshot features with dbt-core 1.9 or higher.","message":"The snapshot implementation was modernized in v1.10.0 to support dbt-core 1.9+ features. Using dbt-core 1.9 or higher with older dbt-exasol versions might result in unexpected behavior or errors with snapshot models.","severity":"gotcha","affected_versions":"<1.10.0 with dbt-core >=1.9.0"}],"env_vars":null,"last_verified":"2026-04-11T00:00:00.000Z","next_check":"2026-07-10T00:00:00.000Z"}