Top Fields Constructors Methods
liquibase.change.core

public Class LoadUpdateDataChange

extends LoadDataChange
Class Inheritance
Annotations
@DatabaseChange
name:loadUpdateData
description:Loads or updates data from a CSV file into an existing table. Differs from loadData by issuing a SQL batch that checks for the existence of a record. If found, the record is UPDATEd, else the record is INSERTed. Also, generates DELETE statements for a rollback. A value of NULL in a cell will be converted to a database NULL rather than the string \'NULL\'
priority:1
appliesTo:table
since:2.0
Imports
liquibase.change.ChangeMetaData, .ChangeStatus, .DatabaseChange, .DatabaseChangeProperty, liquibase.changelog.ChangeSet, liquibase.database.Database, liquibase.datatype.DataTypeFactory, liquibase.exception.RollbackImpossibleException, liquibase.resource.ResourceAccessor, liquibase.statement.BatchDmlExecutablePreparedStatement, .ExecutablePreparedStatementBase, .SqlStatement, liquibase.statement.core.DeleteStatement, .InsertOrUpdateStatement, .InsertStatement, liquibase.util.StringUtil, java.util.ArrayList, .List

Field Summary

Modifier and TypeField and Description
private Boolean
private String
Inherited from liquibase.change.core.LoadDataChange:
BASE64_PATTERNDEFAULT_COMMENT_PATTERN

Constructor Summary

AccessConstructor and Description
public

Method Summary

Modifier and TypeMethod and Description
public ChangeStatus
checkStatus(Database database)

Overrides liquibase.change.core.LoadDataChange.checkStatus.

Implements liquibase.change.Change.checkStatus.

Validate that this change executed successfully against the given database.

protected ExecutablePreparedStatementBase
protected InsertStatement

Returns:

a specialised liquibase.statement.core.InsertOrUpdateStatement that will either insert or update rows in the target table
createStatement
(String
name of the catalog where the table exists
catalogName
,
String
name of the schema where the table exists
schemaName
,
String
the table name to insert/update data
tableName
)

Overrides liquibase.change.core.LoadDataChange.createStatement.

Creates a liquibase.statement.core.InsertOrUpdateStatement statement object for the specified table

public SqlStatement[]
public Boolean
public String
public String
public String
private String
getWhere(InsertOrUpdateStatement insertOrUpdateStatement, Database database)

protected boolean
public void
setOnlyUpdate(Boolean onlyUpdate)

public void
setPrimaryKey(String primaryKey)

Inherited from liquibase.change.core.LoadDataChange:
addColumncolumnConfigFromNamecolumnIdStringcreateStatementSetgenerateCheckSumgenerateRollbackStatementsVolatilegenerateStatementsgenerateStatementsFromRowsgenerateStatementsVolatilegetColumnConfiggetColumnsgetCommentLineStartsWithgetConfirmationMessagegetCSVReadergetEncodinggetFilegetQuotchargetRelativeTogetSeparatorgetUsePreparedStatementsgetValueToWriteisRelativeToChangelogFilesetColumnssetCommentLineStartsWithsetEncodingsetFilesetQuotcharsetRelativeToChangelogFilesetSeparatorsetUsePreparedStatementssupportssupportsBatchUpdatesvalidatevalidateColumnvalidateColumnswarn

Field Detail

onlyUpdateback to summary
private Boolean onlyUpdate
primaryKeyback to summary
private String primaryKey

Constructor Detail

LoadUpdateDataChangeback to summary
public LoadUpdateDataChange()

Method Detail

checkStatusback to summary
public ChangeStatus checkStatus(Database database)

Overrides liquibase.change.core.LoadDataChange.checkStatus.

Implements liquibase.change.Change.checkStatus.

Doc from liquibase.change.Change.checkStatus.

Validate that this change executed successfully against the given database. This will check that the update completed at a high level plus check details of the change. For example, a change to add a column will check that the column exists plus data type, default values, etc.

Annotations
@Override
createPreparedStatementback to summary
protected ExecutablePreparedStatementBase createPreparedStatement(Database database, String catalogName, String schemaName, String tableName, List<LoadDataColumnConfig> columns, ChangeSet changeSet, ResourceAccessor resourceAccessor)

Overrides liquibase.change.core.LoadDataChange.createPreparedStatement.

Annotations
@Override
createStatementback to summary
protected InsertStatement createStatement(String catalogName, String schemaName, String tableName)

Overrides liquibase.change.core.LoadDataChange.createStatement.

Creates a liquibase.statement.core.InsertOrUpdateStatement statement object for the specified table

Parameters
catalogName:String

name of the catalog where the table exists

schemaName:String

name of the schema where the table exists

tableName:String

the table name to insert/update data

Returns:InsertStatement

a specialised liquibase.statement.core.InsertOrUpdateStatement that will either insert or update rows in the target table

Annotations
@Override
generateRollbackStatementsback to summary
public SqlStatement[] generateRollbackStatements(Database database) throws RollbackImpossibleException

Overrides liquibase.change.AbstractChange.generateRollbackStatements.

Implements liquibase.change.Change.generateRollbackStatements.

Doc from liquibase.change.AbstractChange.generateRollbackStatements.

Implementation relies on value returned from createInverses().

Annotations
@Override
Exceptions
RollbackImpossibleException:

Doc from liquibase.change.Change.generateRollbackStatements.

if rollback is not supported for this change

getOnlyUpdateback to summary
public Boolean getOnlyUpdate()
Annotations
@DatabaseChangeProperty
description:If true, records with no matching database record should be ignored
since:3.3
supportsDatabase:all
getPrimaryKeyback to summary
public String getPrimaryKey()
Annotations
@DatabaseChangeProperty
description:Comma-delimited list of columns for the primary key
requiredForDatabase:all
getSerializedObjectNamespaceback to summary
public String getSerializedObjectNamespace()

Overrides liquibase.change.core.LoadDataChange.getSerializedObjectNamespace.

Implements liquibase.serializer.LiquibaseSerializable.getSerializedObjectNamespace.

Annotations
@Override
getTableNameback to summary
public String getTableName()

Overrides liquibase.change.core.LoadDataChange.getTableName.

Annotations
@Override
@DatabaseChangeProperty
description:Name of the table to insert or update data in
requiredForDatabase:all
getWhereback to summary
private String getWhere(InsertOrUpdateStatement insertOrUpdateStatement, Database database)
hasPreparedStatementsImplementedback to summary
protected boolean hasPreparedStatementsImplemented()

Overrides liquibase.change.core.LoadDataChange.hasPreparedStatementsImplemented.

Annotations
@Override
setOnlyUpdateback to summary
public void setOnlyUpdate(Boolean onlyUpdate)
setPrimaryKeyback to summary
public void setPrimaryKey(String primaryKey)