Beim Versuch, zahlreiche Zeilen effizient in eine MySQL-Tabelle einzufügen, kann es beim herkömmlichen PreparedStatement-Ansatz zu Einschränkungen kommen, da dies nicht möglich ist Die Anzahl der einzufügenden Zeilen wird vorab in PreparedStatement festgelegt.
Um den Einfügungsprozess zu optimieren, stellt MySQL die Batch-Einfügungssyntax wie folgt bereit:
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
Verwenden Sie PreparedStatement für die Batch-Einfügung
Verwenden PreparedStatement Die Schritte zum Batch-Einfügen sind wie folgt:
Beispielcode:
public void save(List<Entity> entities) throws SQLException { try ( Connection connection = database.getConnection(); PreparedStatement statement = connection.prepareStatement(SQL_INSERT); ) { int i = 0; for (Entity entity : entities) { statement.setString(1, entity.getSomeProperty()); // ... statement.addBatch(); i++; if (i % 1000 == 0 || i == entities.size()) { statement.executeBatch(); // Execute every 1000 items. } } } }
Es ist zu beachten, dass bei der Stapeleinfügung empfohlen wird, diese alle bestimmte Anzahl von Zeilen durchzuführen (z (z. B. 1000), da einige JDBC-Treiber oder Datenbanken möglicherweise Einschränkungen hinsichtlich der Stapellänge haben.
Verwandte Referenzen:
Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von PreparedStatement effizient mehrere Zeilen in MySQL einfügen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!