
org.peekmoon.database.walker.DatabaseTaskInsert Maven / Gradle / Ivy
package org.peekmoon.database.walker;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import org.peekmoon.database.walker.schema.CustomBlob;
import org.peekmoon.database.walker.schema.CustomClob;
import org.peekmoon.database.walker.schema.Table;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class DatabaseTaskInsert {
private final static Logger log = LoggerFactory.getLogger(DatabaseTaskDelete.class);
public void insert(Connection conn, Fragment fragment) throws SQLException {
for (Set partition : fragment.getInsertOrderedPartitions()) {
if (partition.size()>1) throw new IllegalStateException("Row graph is not acyclic : " + partition);
for (Row row : partition) {
insert(conn, row);
}
}
}
private void insert(Connection conn, Row row) throws SQLException {
Table table = row.getTable();
String sql = table.getSqlInsert();
// TODO : mutualize preparedStatement
List clobs = new LinkedList<>();
List blobs = new LinkedList<>();
try (PreparedStatement stmt = conn.prepareStatement(sql)) {
log.debug(sql);
for (int i=0; i
© 2015 - 2025 Weber Informatics LLC | Privacy Policy