MySQL テーブルに多数の行を効率的に挿入しようとすると、従来の PreparedStatement アプローチでは制限に遭遇する可能性があります。挿入する行数はPreparedStatementであらかじめ決められています。
挿入プロセスを最適化するために、MySQL は次のようなバッチ挿入構文を提供します。
INSERT INTO table (col1, col2) VALUES ('val1', 'val2'), ('val1', 'val2')[, ...]
バッチ挿入には PreparedStatement を使用します
使用PreparedStatement バッチ挿入の手順は次のとおりです。
サンプルコード:
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. } } } }
バッチ挿入を実行する場合は、一定の行数ごとに実行することをお勧めします。例: 1000)。これは、一部の JDBC ドライバーまたはデータベースにはバッチの長さに制限がある場合があるためです。
関連資料:
以上がPreparedStatement を使用して MySQL に複数の行を効率的に挿入するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。