BATCH
estoy intentando subir un excel de 500 registros
este el codigo del la insercion, el trabaja bien el laninea 151 hay un registro con error asi que el termina su ejecucion y me quedan insertados 150 registros, lo que yo quiero lograr es que me siga insertando todo lo que puede insertar, y al final mandar un mensaje sobre los registros que no se pudieron insertar, como ven quiero hacer esto con batch pero no se como acomodarlo.
public boolean subeDatos(DataBase db, List<DatosDTO> listaDatos) throws SQLException
{
boolean ok=false;
final Integer batchSize = 1000;
List<DatosDTO> fallidos = new ArrayList<DatosDTO>();
DatosDTO[] batch = new DatosDTO[ listaDatos.size() ];
Integer count = 0;
Connection conn = null;
PreparedStatement ps = null;
try
{
conn = db.getConnection();
conn.setAutoCommit(false);
ps = conn.prepareStatement("INSERT INTO tabla(CODVENTA,FECHA,MES,NOMBRE)"
+ " VALUES(?,sysdate,?,?)");
for (DatosDTO arr: listaDatos)
{
ps.clearParameters();
batch[count] = arr;
ps.setString(1, arr.getCodPuntoVenta());
ps.setString(2, "9");
ps.setString(3, arr.getCedula());
ps.setString(4, arr.getNombreArrendador());
ps.addBatch();
if (++count % batchSize==0 || count == listaDatos.size() )
{
int [] r = ps.executeBatch();
// ps.executeBatch();
ps.clearBatch();
}
count++;
}
conn.commit();
}
catch(BatchUpdateException ex)
{
int [] r = ps.executeBatch();
}
catch(SQLException e)
{
System.out.println("");
}
finally{
DataBase.closePS(ps);
DataBase.closeCO(conn);
}
return ok;
}
{
boolean ok=false;
final Integer batchSize = 1000;
List<DatosDTO> fallidos = new ArrayList<DatosDTO>();
DatosDTO[] batch = new DatosDTO[ listaDatos.size() ];
Integer count = 0;
Connection conn = null;
PreparedStatement ps = null;
try
{
conn = db.getConnection();
conn.setAutoCommit(false);
ps = conn.prepareStatement("INSERT INTO tabla(CODVENTA,FECHA,MES,NOMBRE)"
+ " VALUES(?,sysdate,?,?)");
for (DatosDTO arr: listaDatos)
{
ps.clearParameters();
batch[count] = arr;
ps.setString(1, arr.getCodPuntoVenta());
ps.setString(2, "9");
ps.setString(3, arr.getCedula());
ps.setString(4, arr.getNombreArrendador());
ps.addBatch();
if (++count % batchSize==0 || count == listaDatos.size() )
{
int [] r = ps.executeBatch();
// ps.executeBatch();
ps.clearBatch();
}
count++;
}
conn.commit();
}
catch(BatchUpdateException ex)
{
int [] r = ps.executeBatch();
}
catch(SQLException e)
{
System.out.println("");
}
finally{
DataBase.closePS(ps);
DataBase.closeCO(conn);
}
return ok;
}
- hackchan's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios recientes
hace 1 día 19 horas
hace 1 día 19 horas
hace 1 día 5 horas
hace 45 semanas 9 horas
hace 2 años 4 semanas
hace 2 años 8 semanas
hace 2 años 16 semanas
hace 2 años 24 semanas
hace 2 años 26 semanas
hace 2 años 28 semanas