New Webinar: Govern roles, shares, and data movement in Snowflake

Learn how to govern Snowflake roles, shares, and data movement without slowing delivery. Join our live webinar on controlling drift, permissions, and audit readiness.

How do I include and exclude database objects?

Liquibase allows you to include and exclude objects from your database to a changelog file. You can specify the objects you want to include or exclude when running the diff and generate-changelog commands in the CLI.

The --exclude-objects and --include-objects attributes help you filter the data that is exported by specifying objects and object types:

  • --exclude-objects alters output to exclude the objects specified.

  • --include-objects alters output to include only the objects specified.

Note: The attribute names for Maven are diffIncludeObjects and diffExcludeObjects. They have the same functionality as the attributes for the CLI.

Syntax

Note: Liquibase uses the java.util.regex engine to match regular expressions.

  • An object name, which is a regular expression (regexp) you specify, will include or exclude any object from the database which name matches the regexp.

  • Multiple expressions must be separated by a comma.

  • The type:name logic will be applied to the tables containing columns, indexes, foreign keys, primary keys, unique constraints, and others.

When running the --exclude-objects or --include-objects attribute with the diff command, the objects you want to filter are not only the objects specified. They are also dependent objects. For example, if you run include-objects=new_table, you will see new_table in the output and the associated columns. If you run exclude-objects=new_table, the output will not include the table or the columns. This dependency logic works for columns, indexes, foreign keys, primary keys, unique constraints, and data.

Note: The name comparison is case-sensitive. If you want to run case-insensitive searches, use the (?i) regexp flag.

Examples

  • "table_name" will match a table called "table_name". It will not match "other_table" or "TABLE_NAME".

  • "(?i)table_name" will match a table called "table_name" or "TABLE_NAME".

  • "table_name" will match all columns in the table called "table_name".

  • "table:table_name" will match a table called "table_name". It will not match a column called "table_name".

  • "table:table_name, column:.*_lock" will match a table called "table_name" and all columns that end with _lock".