The <sqlFile> Change Type allows you to specify sql statements in an external file.


The <sqlFile> Change Type is useful for complex changes that are not supported through Liquibase automated Change Types such as stored procedures. The SQL contained in the <sqlFile> Change Type can be multi-line.

Using the sqlFile Change Type

The <sqlFile> Change Type finds the file by searching in the following order:

  • The file is searched for in the classpath. This can be manually set and by default the Liquibase startup script adds the current directory when run.
  • The file is searched for using the file attribute as a file name. This allows absolute paths to be used or relative paths to the working directory to be used.

The <sqlFile> Change Type supports multiple SQL statements in the same file:

  • Single-line SQL statements can be separated using a ; at the end of the last line of the SQL or a GO statement. A GO statement must be on a separate line between the two SQL statements.
  • Multi-line SQL statements are also supported. Only a ; or GO statement will finish a multi-line SQL statement, a new line is not enough.
  • Files containing a single SQL statement do not need to use a ; or GO statement.

The <sqlFile> Change Type supports comments using the following formats:

  • A multi-line comment that starts with /* and ends with */.
  • A single-line comment starting with -- and finishing at the end of the line.

The <sqlFile> Change Type can be included within the rollback section in the changeset.

Note: By default Liquibase will attempt to split statements on a ; or GO at the end of lines. If you have a comment or non-statement ending with ; or GO, do not include it at the end of a line or you will get invalid SQL.

Available attributes

Name Description Required for Supports Since
dbms Logical expression of database type(s) on which the change must be applied. Valid database type names are listed on the supported databases page. It can be a comma separated list of multiple databases. Or You can also specify that a change is NOT applicable to a particular database type by prefixing with !. The keywords all and none are also available. all 3.0
encoding Encoding used in the file defined in the `path` attribute all
endDelimiter Delimiter to apply to the end of the statement. Defaults to ';', may be set to ''. all
path The file path of the SQL file to load all all
relativeToChangelogFile Whether the file path relative to the root changelog file rather than to the classpath. all
splitStatements Set to false to not have Liquibase split statements on ;'s and GO's. Defaults to true if not set all
stripComments Set to true to remove any comments in the SQL before executing, otherwise false. all

Database support

Database Note Auto rollback
DB2/LUW Supported No
DB2/z Supported No
Derby Supported No
Firebird Supported No
H2 Supported No
HyperSQL Supported No
INGRES Supported No
Informix Supported No
MariaDB Supported No
MySQL Supported No
Oracle Supported No
PostgreSQL Supported No
SQL Server Supported No
SQLite Supported No
Sybase Supported No
Sybase Anywhere Supported No
Snowflake Supported No