Mysql
 sql >> Base de données >  >> RDS >> Mysql

Java - comment effectuer des insertions et des mises à jour de bases de données par lots

Java ne vous permettra pas d'ajouter uniquement ? dans le paramètre de chaîne readystatement, car il attend le ? pour l'espace réservé uniquement pour les paramètres à donner au SQL.

Pour votre cas, vous devrez peut-être avoir 2 objets d'instruction préparés, et en boucle, vous pouvez décider lequel appeler. Ce serait donc quelque chose comme ci-dessous :

PreparedStatement insertPstmt = connection.prepareStatement("INSERT INTO MY_TABLE VALUES(?,?,?,?)");
PreparedStatement updatePstmt = connection.prepareStatement("UPDATE MY_TABLE, SET MY_VAL=? WHERE MY_VAL IS NULL");

While (<condition>) {
  If (<insert condition>) {
    // use insert pstmt and add batch
  } else {
    // use update pstmt and add batch
  }
}

insertPstmt.executeBatch(); 
updatePstmt.executeBatch();

si vous avez un insert , qui dépend de la mise à jour, vous pouvez exécuter les lots en conséquence. Cela garantira que la mise à jour fonctionnera correctement. Je penserais à exécuter insert en premier, car ils pourraient ne pas dépendre de la mise à jour.