---
title: Databricks - Delta Deployment with Liquibase
description: Deploy the changes of a Databricks DEV catalog to a PROD catalog that holds data, with Liquibase Community in Docker.
---

[Skip to content](https://knowledge.bigenius-x.com/databricks-delta-deployment-with-liquibase#main-content)

[Contact us](https://knowledge.bigenius-x.com/kb-tickets/new?hsLang=en) [Go to Customer Portal](https://knowledge.bigenius-x.com/customer-portal?hsLang=en)

[![TRI\_Logo\_biGENIUS\_2020\_RGB\_s](https://knowledge.bigenius-x.com/hs-fs/hubfs/Marketing/TRI_Logo_biGENIUS_2020_RGB_s.png?width=150&height=42&name=TRI_Logo_biGENIUS_2020_RGB_s.png)](https://www.bigenius-x.com/)

Open main navigation

Close main navigation

- [Contact us](https://knowledge.bigenius-x.com/kb-tickets/new)
- [Go to Customer Portal](https://knowledge.bigenius-x.com/customer-portal)

 How can we help you?

- There are no suggestions because the search field is empty.

1. [biGENIUS-X Knowledge Base](https://knowledge.bigenius-x.com/?hsLang=en)
2. [Generators](https://knowledge.bigenius-x.com/generators?hsLang=en)
3. [Delta Deployment](https://knowledge.bigenius-x.com/generators?hsLang=en#delta-deployment)

# Databricks - Delta Deployment with Liquibase

**Applies to**  
Platform: Databricks

Deploy the changes of a Databricks DEV catalog to a PROD catalog that holds data, with Liquibase Community in Docker. Liquibase writes the differences of the tables as SQL files that you review and run in PROD, and a Python script exports the views of DEV into a notebook. Afterwards PROD has the structure of DEV.

biGENIUS-X itself always deploys the complete solution, see [Do a delta deployment](https://knowledge.bigenius-x.com/do-a-delta-deployment?hsLang=en).

### Example environment

The article uses two catalogs of one Databricks workspace with Unity Catalog, deployed from the same Data Vault project:

- DEV, catalog `datalakehouse_liquibase_dev`: holds the new version, deployed and loaded. Compared with PROD, it adds the Hub `CURRENCY`, renames the term `LINETOTAL` of the Satellite `ORDERDETAIL` to `TOTAL`, and no longer has the Reference Table `CURRENCY`.
- PROD, catalog `datalakehouse_liquibase_prod`: holds the previous version with its loaded data.

The Liquibase Databricks library has two limitations: catalog names must not contain hyphens (`-`), and the schema names of DEV and PROD must differ, for example `c3dbdv_rawvault_dev` and `c3dbdv_rawvault_prod`. Each catalog is reached with its own [personal access token](https://docs.databricks.com/en/dev-tools/auth/pat.html). The [Databricks - Target environment with Unity Catalog](https://knowledge.bigenius-x.com/databricks-unity-target-environment?hsLang=en) describes how to prepare the catalogs.

### Prerequisites

The machine that runs Liquibase needs Docker, for example Docker Desktop.

#### Liquibase folder structure

Create a folder, here `C:\PROJECTS\liquibase_demo`, with the subfolder `liquibase` and its subfolders `changelog`, `conf` and `lib`:

![Liquibase folder with the changelog, conf and lib subfolders](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-03-2026-09-32-54-2464-AM.png?width=640&height=190&name=image-png-Feb-03-2026-09-32-54-2464-AM.png)

#### Drivers

Download into `lib`:

- The latest `liquibase-databricks-<version>.jar` from the [liquibase-databricks releases](https://github.com/liquibase/liquibase-databricks/releases/).
- `DatabricksJDBC42.jar` from [DatabricksJDBC42-2.7.3.1010.zip](https://databricks-bi-artifacts.s3.us-east-2.amazonaws.com/simbaspark-drivers/jdbc/2.7.3/DatabricksJDBC42-2.7.3.1010.zip).

The current [Databricks JDBC driver](https://www.databricks.com/spark/jdbc-drivers-download) does not work here. Liquibase Databricks 1.4.2 does not contain the fix of [issue 340](https://github.com/liquibase/liquibase-databricks/issues/340), so `EnableArrow=0` is set twice and the connection fails.

#### Properties

Create one property file per schema in `conf`. The HTTP path is shown in the cluster settings under Advanced, JDBC/ODBC. For example, `liquibase-rawvault.properties` for the Raw Vault schemas:

```
# Target DB = PROD (where changes are applied)
url=jdbc:databricks://<workspace host>:443/default;transportMode=http;ssl=1;httpPath=<HTTP path>;AuthMech=3;ConnCatalog=datalakehouse_liquibase_prod;ConnSchema=c3dbdv_rawvault_prod
username=token
password=<PROD token>
defaultCatalogName=datalakehouse_liquibase_prod
defaultSchemaName=c3dbdv_rawvault_prod
# Reference DB = DEV (source of truth)
referenceUrl=jdbc:databricks://<workspace host>:443/default;transportMode=http;ssl=1;httpPath=<HTTP path>;AuthMech=3;ConnCatalog=datalakehouse_liquibase_dev;ConnSchema=c3dbdv_rawvault_dev
referenceUsername=token
referencePassword=<DEV token>
referenceDefaultCatalogName=datalakehouse_liquibase_dev
referenceDefaultSchemaName=c3dbdv_rawvault_dev
# Databricks driver
driver=com.databricks.client.jdbc.Driver
liquibase.includedSnapshotTypes=TABLE,COLUMN,PRIMARYKEY,INDEX,SCHEMA
```

Here `<workspace host>` is the host name of the workspace URL, `<HTTP path>` the HTTP path of the cluster, and the tokens are the personal access tokens of PROD and DEV.

#### Python

Install [Python](https://www.python.org/downloads/) and add it to `PATH` during the installation.

### Generate the delta deployment scripts

Generate the scripts in two parts with the [official Liquibase Docker image](https://hub.docker.com/r/liquibase/liquibase): all database objects except the views, then the views. The Liquibase Databricks library does not handle view definitions well, so a Python script exports the views.

#### All database objects except the views

1. Open PowerShell 7 in `C:\PROJECTS\liquibase_demo`.
2. Generate the changelog XML file for one schema. Run the command once per schema, with its property file and XML file; Liquibase cannot compare all schemas in one run.
   
   ```
   docker run --rm `
     -v "$PWD\liquibase\conf:/liquibase/conf" `
     -v "$PWD\liquibase\changelog:/liquibase/changelog" `
     -v "$PWD\liquibase\lib:/liquibase/lib" `
     liquibase/liquibase `
     --defaultsFile=/liquibase/conf/liquibase-rawvault.properties `
     --changeLogFile=/liquibase/changelog/dev_to_prod_all_except_views_rawvault.xml `
     --diffTypes=tables,columns,indexes,foreignkeys,primarykeys,uniqueconstraints,sequences `
     --log-level=warning diffChangeLog
   ```
   
    The run ends with `Liquibase command 'diffChangelog' was executed successfully.`  
   ![Liquibase console output ending with diffChangelog executed successfully](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-03-2026-10-16-58-2076-AM.png?width=433&height=290&name=image-png-Feb-03-2026-10-16-58-2076-AM.png)
3. Check that `changelog\dev_to_prod_all_except_views_rawvault.xml` lists the changes, for example a `createTable` for the new Hub:  
   ![Changelog folder with the file dev\_to\_prod\_all\_except\_views\_rawvault.xml](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-23-2026-10-05-42-0110-AM.png?width=501&height=116&name=image-png-Feb-23-2026-10-05-42-0110-AM.png)  
   ![Changelog XML with a createTable change for rdv\_hub\_currency](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-23-2026-09-57-01-6331-AM.png?width=516&height=193&name=image-png-Feb-23-2026-09-57-01-6331-AM.png)
4. Generate the SQL file for each schema. Use the same `docker run` options up to the image name, followed by:
   
   ```
     --defaultsFile=/liquibase/conf/liquibase-rawvault.properties `
     --changeLogFile=dev_to_prod_all_except_views_rawvault.xml `
     updateSQL > liquibase\changelog\dev_to_prod_all_except_views_rawvault.sql
   ```
   
    The run ends with `Liquibase command 'updateSql' was executed successfully.`  
   ![Liquibase console output ending with updateSql executed successfully](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-03-2026-10-17-42-8978-AM.png?width=442&height=264&name=image-png-Feb-03-2026-10-17-42-8978-AM.png)
5. Open the SQL file. It contains the statements of the changes, for example `CREATE TABLE` for the new Hub:  
   ![Changelog folder with the XML and the SQL file of the rawvault schema](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-23-2026-10-05-58-0827-AM.png?width=481&height=139&name=image-png-Feb-23-2026-10-05-58-0827-AM.png)  
   ![SQL file with CREATE TABLE datalakehouse\_liquibase\_prod.c3dbdv\_rawvault\_prod.rdv\_hub\_currency](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-23-2026-10-06-30-2949-AM.png?width=640&height=56&name=image-png-Feb-23-2026-10-06-30-2949-AM.png)
6. Review each statement.
   
   Liquibase compares structures only. It writes a renamed column as a dropped and an added column, and it drops tables and columns that exist only in PROD; their data is lost. Review the generated SQL files and back up the PROD database before you run them.

#### All views

1. Download [export\_databricks\_views\_v2.py](https://f926da42ec3845beb4acf72f.blob.core.windows.net/hubspotknowledgebase/export_databricks_views_v2.py) into `C:\PROJECTS\liquibase_demo`.
2. Set the values in `CONFIG` for your workspace: the Databricks CLI profile, the DEV and PROD catalogs, the DEV and PROD schema lists (by default `stage`, `rawvault`, `businessvault` and `mart`), the workspace host, the HTTP path of a SQL warehouse and `output_dir`.
3. Set the DEV personal access token in the environment variable `DATABRICKS_TOKEN`, for example `$env:DATABRICKS_TOKEN = '<DEV token>'`.
4. Install the libraries: `pip install databricks-sdk databricks-sql-connector`.
5. Run `python .\export_databricks_views_v2.py`. The script writes the notebook `views_to_deploy_prod_notebook.py` with one cell per view of the DEV schemas, renamed to the PROD catalog and schemas:  
   ![Notebook cell with CREATE OR REPLACE VIEW for datalakehouse\_liquibase\_prod.c3dbdv\_rawvault\_prod.rdv\_current\_creditcard](https://knowledge.bigenius-x.com/hs-fs/hubfs/image-png-Feb-23-2026-01-36-31-0905-PM.png?width=640&height=191&name=image-png-Feb-23-2026-01-36-31-0905-PM.png)

### Run the delta deployment

Run the files in PROD in this order:

1. In each SQL file, find every `DROP COLUMN` statement. Before it, add the column mapping for its table, with your catalog, schema and table:
   
   ```
   ALTER TABLE datalakehouse_liquibase_prod.c3dbdv_rawvault_prod
     .rdv_sat_orderdetail
     SET TBLPROPERTIES ('delta.columnMapping.mode' = 'name');
   ```
   
    Delta tables need column mapping to drop a column. Liquibase writes a generic `ALTER TABLE ... DROP COLUMN` without it.
2. For each schema, copy the content of its SQL file into a new notebook in Databricks and run it.
3. Import `views_to_deploy_prod_notebook.py` into the workspace and run it. Each cell catches its error, and the last cell lists the views that failed, for example because they use a view created later. Run the notebook again until no view fails.

### Check the result

Load PROD, for example as described in [Databricks - Load data - Native Load Control](https://knowledge.bigenius-x.com/databricks-load-data-native-load-control?hsLang=en), and check that every loader succeeds and that the tables keep their earlier rows.

### Related articles

- Previous: [Databricks - Deployment](https://knowledge.bigenius-x.com/databricks-deployment?hsLang=en)
- Next: [Databricks - Load data - Native Load Control](https://knowledge.bigenius-x.com/databricks-load-data-native-load-control?hsLang=en), [Databricks - Load data - Apache Airflow Load Control](https://knowledge.bigenius-x.com/databricks-load-data-apache-airflow-load-control?hsLang=en)
- Reference: [Deployment Options (Project)](https://knowledge.bigenius-x.com/deployment-options-project?hsLang=en)
- See also: [Do a delta deployment](https://knowledge.bigenius-x.com/do-a-delta-deployment?hsLang=en), [Databricks - Artifacts](https://knowledge.bigenius-x.com/databricks-artifacts?hsLang=en), [Deploy a Project in production](https://knowledge.bigenius-x.com/deploy-a-project-in-production?hsLang=en)

- [Getting started](https://knowledge.bigenius-x.com/getting-started?hsLang=en#main-content)

    - [Guidelines](https://knowledge.bigenius-x.com/getting-started?hsLang=en#guidelines)
    - [Start working](https://knowledge.bigenius-x.com/getting-started?hsLang=en#start-working)
    - [Account](https://knowledge.bigenius-x.com/getting-started?hsLang=en#account)
- [General overview](https://knowledge.bigenius-x.com/general-overview?hsLang=en)
- [Artificial Intelligence](https://knowledge.bigenius-x.com/artificial-intelligence?hsLang=en)
- [Application Modules](https://knowledge.bigenius-x.com/application-modules?hsLang=en#main-content)

    - [Administration](https://knowledge.bigenius-x.com/application-modules?hsLang=en#administration)
    - [Solutions](https://knowledge.bigenius-x.com/application-modules?hsLang=en#solutions)
    - [Global Features](https://knowledge.bigenius-x.com/application-modules?hsLang=en#global-features)
    - [Projects](https://knowledge.bigenius-x.com/application-modules?hsLang=en#projects)
    - [Branches](https://knowledge.bigenius-x.com/application-modules?hsLang=en#branches)
    - [Data Connections](https://knowledge.bigenius-x.com/application-modules?hsLang=en#data-connections)
    - [Dataflow Modeling - Overview](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-overview)
    - [Dataflow Modeling - Wizard Steps](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-wizard-steps)
    - [Dataflow Modeling - Terms](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-terms)
    - [Dataflow Modeling - Term Mapping](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-term-mapping)
    - [Dataflow Modeling - Relationships](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-relationships)
    - [Dataflow Modeling - Data Quality](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-data-quality)
    - [Dataflow Modeling - Indexes](https://knowledge.bigenius-x.com/application-modules?hsLang=en#dataflow-modeling-indexes)
    - [Relationship Modeling](https://knowledge.bigenius-x.com/application-modules?hsLang=en#relationship-modeling)
    - [Generate Artifacts](https://knowledge.bigenius-x.com/application-modules?hsLang=en#generate-artifacts)
    - [Project Settings](https://knowledge.bigenius-x.com/application-modules?hsLang=en#project-settings)
    - [Data Marketplace](https://knowledge.bigenius-x.com/application-modules?hsLang=en#data-marketplace)
- [Generators](https://knowledge.bigenius-x.com/generators?hsLang=en#main-content)

    - [Fabric Warehouse](https://knowledge.bigenius-x.com/generators?hsLang=en#fabric-warehouse)
    - [Fabric Lakehouse](https://knowledge.bigenius-x.com/generators?hsLang=en#fabric-lakehouse)
    - [Databricks](https://knowledge.bigenius-x.com/generators?hsLang=en#databricks)
    - [Snowflake](https://knowledge.bigenius-x.com/generators?hsLang=en#snowflake)
    - [Microsoft SQL Server](https://knowledge.bigenius-x.com/generators?hsLang=en#microsoft-sql-server)
    - [Oracle](https://knowledge.bigenius-x.com/generators?hsLang=en#oracle)
    - [Artifacts](https://knowledge.bigenius-x.com/generators?hsLang=en#artifacts)
    - [Replace Placeholders](https://knowledge.bigenius-x.com/generators?hsLang=en#replace-placeholders)
    - [Target solution environment](https://knowledge.bigenius-x.com/generators?hsLang=en#target-solution-environment)
    - [Deployment](https://knowledge.bigenius-x.com/generators?hsLang=en#deployment)
    - [Deployment with an Azuze DevOps pipeline](https://knowledge.bigenius-x.com/generators?hsLang=en#deployment-with-an-azuze-devops-pipeline)
    - [Delta Deployment](https://knowledge.bigenius-x.com/generators?hsLang=en#delta-deployment)
    - [Load control environment](https://knowledge.bigenius-x.com/generators?hsLang=en#load-control-environment)
    - [Load data with a native load control](https://knowledge.bigenius-x.com/generators?hsLang=en#load-data-with-a-native-load-control)
    - [Load data with Apache Airflow](https://knowledge.bigenius-x.com/generators?hsLang=en#load-data-with-apache-airflow)
    - [Model Object Type](https://knowledge.bigenius-x.com/generators?hsLang=en#model-object-type)
    - [Properties](https://knowledge.bigenius-x.com/generators?hsLang=en#properties)
    - [Default Terms](https://knowledge.bigenius-x.com/generators?hsLang=en#default-terms)
- [Discovery application](https://knowledge.bigenius-x.com/discovery-application?hsLang=en#main-content)

    - [Discovery configurations](https://knowledge.bigenius-x.com/discovery-application?hsLang=en#discovery-configurations)
- [Best practices](https://knowledge.bigenius-x.com/best-practices?hsLang=en#main-content)

    - [Modeling Approaches](https://knowledge.bigenius-x.com/best-practices?hsLang=en#modeling-approaches)
    - [Use Cases](https://knowledge.bigenius-x.com/best-practices?hsLang=en#use-cases)
    - [Business Rules](https://knowledge.bigenius-x.com/best-practices?hsLang=en#business-rules)
    - [Data Quality Rules](https://knowledge.bigenius-x.com/best-practices?hsLang=en#data-quality-rules)
- [FAQs](https://knowledge.bigenius-x.com/faqs?hsLang=en)
- [Product Release Notes](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#main-content)

    - [SaaS Application](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#saas-application)
    - [Discovery application](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#discovery-application)
    - [Generators](https://knowledge.bigenius-x.com/product-release-notes?hsLang=en#generators)
- [Legal Documents](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#main-content)

    - [Current legal docs](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#current-legal-docs)
    - [Software Product and Limits](https://knowledge.bigenius-x.com/legal-documents?hsLang=en#software-product-and-limits)

- [Contact us](https://knowledge.bigenius-x.com/kb-tickets/new?hsLang=en)
- [Customer Portal](https://knowledge.bigenius-x.com/customer-portal)
- [Sign in](https://knowledge.bigenius-x.com/_hcms/mem/login)

[![biGENIUS logo](https://knowledge.bigenius-x.com/hubfs/TRI_Logo_biGENIUS_2020_RGB-1.svg "biGENIUS logo")](https://www.bigenius-x.com)

<https://www.linkedin.com/company/bigenius> <https://www.youtube.com/@biGENIUS_DWA>

All rights reserved © 2025, biGENIUS AG