liquibase.change.core.LoadDataChange Maven / Gradle / Ivy
package liquibase.change.core;
import liquibase.change.*;
import liquibase.database.Database;
import liquibase.exception.UnexpectedLiquibaseException;
import liquibase.resource.ResourceAccessor;
import liquibase.statement.SqlStatement;
import liquibase.statement.core.InsertStatement;
import liquibase.util.StringUtils;
import liquibase.util.csv.CSVReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class LoadDataChange extends AbstractChange implements ChangeWithColumns {
private String schemaName;
private String tableName;
private String file;
private String encoding = null;
private List columns = new ArrayList();
public LoadDataChange() {
super("loadData", "Load Data", ChangeMetaData.PRIORITY_DEFAULT);
}
protected LoadDataChange(String changeName, String changeDescription)
{
super(changeName,changeDescription,ChangeMetaData.PRIORITY_DEFAULT);
}
public String getSchemaName() {
return schemaName;
}
public void setSchemaName(String schemaName) {
this.schemaName = StringUtils.trimToNull(schemaName);
}
public String getTableName() {
return tableName;
}
public void setTableName(String tableName) {
this.tableName = tableName;
}
public String getFile() {
return file;
}
public void setFile(String file) {
this.file = file;
}
public String getEncoding() {
return encoding;
}
public void setEncoding(String encoding) {
this.encoding = encoding;
}
public void addColumn(ColumnConfig column) {
columns.add((LoadDataColumnConfig) column);
}
public List getColumns() {
return (List) (List) columns;
}
public SqlStatement[] generateStatements(Database database) {
try {
CSVReader reader = getCSVReader();
String[] headers = reader.readNext();
if (headers == null) {
throw new UnexpectedLiquibaseException("Data file "+getFile()+" was empty");
}
List statements = new ArrayList();
String[] line = null;
while ((line = reader.readNext()) != null) {
if (line.length == 0 || (line.length == 1 && StringUtils.trimToNull(line[0]) == null)) {
continue; //nothing on this line
}
InsertStatement insertStatement = this.createStatement(getSchemaName(), getTableName());
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy