Loads data from a CSV file into an existing table. A value of NULL in a cell will be converted to a database NULL rather than the string ‘NULL’. Lines starting with # (hash) sign are treated as comments. You can change comment pattern by specifying ‘commentLineStartsWith’ attribute.To disable comments set ‘commentLineStartsWith’ to empty value’

If the data type for a load column is set to NUMERIC, numbers are parsed in US locale (e.g. 123.45). Date/Time values included in the CSV file should be in ISO format http://en.wikipedia.org/wiki/ISO_8601 in order to be parsed correctly by Liquibase. Liquibase will initially set the date format to be ‘yyyy-MM-dd’T’HH:mm:ss’ and then it checks for two special cases which will override the data format string.

If the string representing the date/time includes a ‘.’, then the date format is changed to ‘yyyy-MM-dd’T’HH:mm:ss.SSS’ If the string representing the date/time includes a space, then the date format is changed to ‘yyyy-MM-dd HH:mm:ss’ Once the date format string is set, Liquibase will then call the SimpleDateFormat.parse() method attempting to parse the input string so that it can return a Date/Time. If problems occur, then a ParseException is thrown and the input string is treated as a String for the INSERT command to be generated. If UUID type is used UUID value is stored as string and NULL in cell is supported.

Available attributes

Name Description Required for Supports Since
catalogName Name of the catalog all 3.0
commentLineStartsWith Lines starting with this are treated as comment and ignored. all
encoding Encoding of the CSV file (defaults to UTF-8) all
file CSV file to load. all all
quotchar The quote character for string fields containing the separator character. all
relativeToChangelogFile Whether the file path relative to the root changelog file rather than to the classpath. all
schemaName Name of the schema. all
separator Character separating the fields. all
tableName Name of the table to insert data into. all all
usePreparedStatements Use prepared statements instead of insert statement strings if the DB supports it. all

Nested properties

Name Description Required for Supports Multiple allowed
columns? / column Column mapping and defaults can be defined. The 'header' or 'index' attributes needs to be defined if the header name in the CSV is different than the column name needs to be inserted If no `column` defined at all, the type it is taken from the DB. Otherwise for non-string columns the type definition might be required. all yes

Nested property attributes

Name Name of the Column (Required)
type Data type of the column. Its value has to be one of the LOAD_DATA_TYPE.
header Name of the column in the CSV file from which the value for the column shall be taken if its different from the column name. Ignored if index is also defined.
index Index of the column in the CSV file from which the value for the column shall be taken.

XML example

<changeSet  author="liquibase-docs"  id="loadData-example">  
    <loadData  catalogName="cat"  
        <column  header="header1"  
        <column  index="3"  

YAML example

  id:  loadData-example  
  author:  liquibase-docs  
  -  loadData:  
      catalogName:  cat  
      -  column:  
          header:  header1  
          name:  id  
          type:  NUMERIC  
      -  column:  
          index:  3  
          name:  name  
          type:  BOOLEAN  
      commentLineStartsWith:  //  
      encoding:  UTF-8  
      file:  example/users.csv  
      quotchar:  ''''  
      relativeToChangelogFile:  true  
      schemaName:  public  
      separator:  ;  
      tableName:  person  
      usePreparedStatements:  true

JSON example

{  "changeSet":  {  "id":  "loadData-example",  "author":  "liquibase-docs",  "changes":  [  {  "loadData":  {  "catalogName":  "cat",  "columns":  [  {  "column":  {  "header":  "header1",  "name":  "id",  "type":  "NUMERIC"  }  },  {  "column":  {  "index":  3,  "name":  "name",  "type":  "BOOLEAN"  }  }]  ,  "commentLineStartsWith":  "//",  "encoding":  "UTF-8",  "file":  "example/users.csv",  "quotchar":  "'",  "relativeToChangelogFile":  true,  "schemaName":  "public",  "separator":  ";",  "tableName":  "person",  "usePreparedStatements":  true  }  }]  }  }

Database support

Database Notes 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