Devo inserire più righe nel database SQL Server (100 alla volta) dal mio codice Java. Come posso fare questo? Attualmente sto inserendo uno per uno e questo non sembra efficiente.Inserimento di più righe in SQL Server da Java
risposta
È possibile utilizzare PreparedStatement#addBatch()
per creare un batch e executeBatch()
per eseguirlo.
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) {}
}
Vedi anche:
È possibile passare un molto lunga stringa a SQL con più inserimenti come una dichiarazione a SQL Server. Questo non funzionerà se stai facendo query parametriche, però. E le stringhe SQL concatenate sono "Generalmente una cattiva idea".
Potrebbe essere meglio guardare il comando BULK INSERT. Ha il problema di essere rigido sugli ordini di colonne e così via. Ma il suo MODO VELOCE !!
non posso usarlo perché non ho un file ... grazie comunque ... – Kaddy
sì, è un PITA per scrivere il file e così, ma è un buon comando di cui essere consapevole. :) –
ha trovato un esempio di batch utilizzando jdbc. verificarlo: http://www.exampledepot.com/egs/java.sql/BatchUpdate.html
- 1. Inserimento di più di 1000 righe da Excel in SQLServer
- 2. Inserimento di più righe utilizzando JdbcTemplate
- 3. Inserimento di più righe in una tabella di SQL Server utilizzando una variabile di tabella
- 4. Esempio di inserimento di SQL Server
- 5. Inserimento di valori variabili in SQL Server utilizzando Java
- 6. Inserimento di massa in SQL Server CE
- 7. Inserimento di caratteri danesi in sql server da PHP
- 8. Inserimento di GUID in SQL Server
- 9. SQL Server: combinazione di più righe in una riga
- 10. Elimina righe "duplicate" in SQL Server 2010
- 11. inserimento di più righe con un comando di inserimento
- 12. Inserire più righe nella tabella in SQL Server
- 13. media di righe raggruppate in SQL Server
- 14. Bulk milioni di inserimento di SQL Server di registrazione
- 15. Inserimento/aggiornamento bulk del server SQL in MERGE nello scenario di inserimento o aggiornamento
- 16. Inserimento DATETIME SQL da Excel?
- 17. Come posso combinare più righe in un elenco delimitato da virgole in SQL Server?
- 18. inserire più righe nella tabella Temp con SQL Server 2012
- 19. Come eseguire l'upster (aggiornamento o inserimento) in SQL Server 2005
- 20. Inserimento Oracle da select in table con più colonne
- 21. SQL - Prendere i dati da più righe in un'unica riga
- 22. SQL server: conversione righe in colonne
- 23. SQL Server converte colonne in righe
- 24. Scorrere le righe in SQL Server 2008
- 25. SQL Server Unisci 2 righe in 1
- 26. SQL server selezionare righe distinte utilizzando più valore recente solo
- 27. MySql - Inserimento di più righe con una sottoquery unita?
- 28. C#, aggiornamento SQL più righe
- 29. Seleziona righe con colonne corrispondenti da SQL Server
- 30. Inserimento di Microsoft SQL Server dalla query di selezione
in questo approccio se un record del batch fallisce cosa succederà ..? verranno inseriti i record dopo il record fallito ... come posso assicurarmi che tranne il record che non riesce a inserire tutti gli altri record ...? – Kaddy
In realtà dipende dal driver utilizzato. Vedi ['executeBatch()' javadoc] (http://java.sun.com/javase/6/docs/api/java/sql/Statement.html#executeBatch%28%29). – BalusC