Necesito insertar varias filas en la base de datos de SQL Server (100 a la vez) desde mi código Java. ¿Cómo puedo hacer esto? Actualmente estoy insertando uno por uno y esto no parece eficiente.Insertar varias filas en SQL Server desde Java
Respuesta
Puedes usar PreparedStatement#addBatch()
para crear un lote y executeBatch()
para ejecutarlo.
Connection connection = null;
PreparedStatement statement = null;
try {
connection = database.getConnection();
statement = connection.prepareStatement(SQL);
for (int i = 0; i < items.size(); i++) {
Item item = items.get(i);
statement.setString(1, item.getSomeValue());
// ...
statement.addBatch();
if ((i + 1) % 100 == 0) {
statement.executeBatch(); // Execute every 100 items.
}
}
statement.executeBatch();
} finally {
if (statement != null) try { statement.close(); } catch (SQLException logOrIgnore) {}
if (connection != null) try { connection.close(); } catch (SQLException logOrIgnore) {}
}
Ver también:
Puede pasar una muy cadena larga a SQL con varias inserciones como una declaración a SQL Server. Sin embargo, esto no funcionará si estás haciendo consultas parametrizadas. Y las cadenas de SQL concatenadas son "Generalmente una mala idea".
Puede que sea mejor que observe el comando BULK INSERT. Tiene el problema de ser rígido con los pedidos de columnas y demás. ¡Pero es MUY RÁPIDO!
no puedo usar esto porque no tengo un archivo ... gracias de todos modos ... – Kaddy
sí, es un PITA para escribir el archivo y tal, pero es un buen comando para tener en cuenta. :) –
encontró un ejemplo de procesamiento por lotes usando jdbc. mira esto: http://www.exampledepot.com/egs/java.sql/BatchUpdate.html
- 1. Insertar varias filas en la tabla en SQL Server
- 2. SQL Server 2005: Insertar varias filas con una sola consulta
- 3. Codeigniter Insertar varias filas en SQL
- 4. Insertar varias filas usando JdbcTemplate
- 5. Insertar varias filas en Oracle
- 6. Insertar varias filas en MySQL
- 7. SQL Insertar múltiples filas
- 8. Insertar varias filas usando seleccionar
- 9. SQL ¿Insertar una fila o varias filas de datos?
- 10. SQL Server: SUMA() de varias filas incluidos, en las cláusulas
- 11. SQL dividir varias columnas en varias filas
- 12. Insertar GUID en SQL Server
- 13. Insertar varias filas con una sola consulta
- 14. Insertar el mismo valor fijo en varias filas
- 15. Insertar valores de variables en SQL Server usando Java
- 16. promedio de filas agrupadas en SQL Server
- 17. seleccionar varias filas SQL en una fila
- 18. número de filas SQL Server
- 19. C# - Insertar varias filas usando un procedimiento almacenado
- 20. Insertar varias filas de valores por defecto en una tabla
- 21. ¿La mejor manera de insertar varias filas en Oracle?
- 22. Número de filas 'superpuestas' en SQL Server
- 23. Editar filas seleccionadas manualmente en SQL Server
- 24. Eliminar filas "duplicadas" en SQL Server 2010
- 25. Actualizando varias filas Linq vs SQL
- 26. ¿Cómo seleccionar varias filas SQL codificadas?
- 27. ¿Cómo puedo combinar varias filas en una lista delimitada por comas en SQL Server 2005?
- 28. ¿Cómo puedo combinar varias filas en una lista delimitada por comas en SQL Server?
- 29. Dividir varias columnas en varias filas
- 30. php mysql_insert_id en varias filas?
en este enfoque si un registro del lote falla ¿qué pasará ..? se insertarán los registros después del registro fallido ... ¿cómo me aseguro de que se inserte, excepto el registro que falla todos los demás registros ...? – Kaddy
Eso en realidad depende del controlador utilizado. Ver ['executeBatch()' javadoc] (http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#executeBatch%28%29). – BalusC