snapshot-reference
Last published July 28, 2025
The snapshot-reference command captures the current state of the reference-url database, which is the source database.
The snapshot-reference command has two modes:
When run without options, it gathers the current state of the database and shows a text-based version of the schema to STDOUT. When run with the --snapshot-format=json option, it creates a JSON file that represents the current state of the reference-url database. Alternatively, you can have a YAML-based output by using the --snapshot-format=yaml attribute.
Uses
The snapshot-reference
command is typically used when you want to see changes in your sourcedatabase or keep a record of your current database state.
You can use the output of snapshot-reference
with the diff and diff-changelog commands.
Note: It is best practice to use the --snapshot-format=json
option for the diff
and diff-changelog
commands. Otherwise, you will get only a text report of your target database. This text report cannot be used for comparison in the future.
It can also be used to compare:
A previous database state to an online database.
A previous database state to another snapshot.
Note: Running a diff
command by using at least one snapshot.json
file is faster than using a diff
command with two online databases. However, keep in mind that a snapshot will no longer reflect the current state of the database if the database is changed with the update
command or if it is changed manually.
Syntax
To run the snapshot-reference
command, specify your driver, classpath, and URL in the Liquibase properties file. You can also specify these properties in your command line.
Then run the snapshot-reference
command:
liquibase snapshot-reference
To create a JSON file, add the --snapshot-format=json
attribute:
liquibase --output-file=mySnapshot.json snapshot-reference --snapshot-format=json
Parameters
Note: The username and password attributes are not required for connections and systems which use alternate means of authentication. Also, you can specify database credentials as part of the url attribute.
Global parameters
Attribute | Definition | Requirement |
| File path to where the command output will be written. If not specified, output goes to | Optional |
Command parameters
Attribute | Definition | Requirement |
| The JDBC reference database connection URL | Required |
| The reference default catalog name to use for the database connection | Optional |
| The reference default schema name to use for the database connection | Optional |
| The JDBC driver class | Optional |
| The JDBC driver properties file | Optional |
| Reference database catalog to use for Liquibase objects. Liquibase 4.24.0+. | Optional |
| Reference database schema to use for Liquibase objects. Liquibase 4.24.0+. | Optional |
| The reference database password. Tip: It is best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
| The reference database username. Tip: It is best practice to store sensitive data in a Secrets Management tool with Liquibase Pro. | Optional |
| Liquibase Pro 4.26.0+. Controls which types of objects Liquibase includes in the snapshot. Can improve command performance. Specify multiple values in a comma-separated list. Accepted values are: | Optional |
| Output format to use. Creates a file of the specified type that represents the current state of the database. Valid values: | Optional |
Liquibase Open Source snapshot-reference categories
Catalog
Column
Foreign Key
Index
Primary Key
Schema
Sequence
Unique Constraints
View
Liquibase Pro snapshot-reference categories
Package
Package Body
Procedures
Function
Trigger
Synonyms
Check Constraints
Output examples
The snapshot-reference command produces a JSON file that contains all your objects and places the file in the same directory as your changelog.
Liquibase Community 4.9.1 by Liquibase
Output saved to C:\Users\Amber Williams\Documents\Maven_h2\mySnapshot.json
Liquibase command 'snapshot-reference' was executed successfully.