如何在Java中使用批处理执行Upsert

时间:2019-06-18 06:39:02

标签: java sql sql-server batch-processing upsert

我需要使用批处理执行upsert处理大量数据。如果它们是新记录,我需要插入记录,如果已经存在,则需要更新。

我能够插入或更新,但不能同时执行。

有人可以帮我吗?

    String sqlInsert = "INSERT INTO " + tablename + " (Group_ID,Group_Name,Created_Date) VALUES(?,?,?)";
    PreparedStatement insertGroups = con.prepareStatement(sqlInsert);

    String sqlUpdate = "UPDATE " + tablename + " SET Group_ID=?, Group_Name=?, Created_Date=? WHERE Group_ID=?";
    PreparedStatement updateGroups = con.prepareStatement(sqlUpdate);

    int count = 0;
    for(Map.Entry<String, String> entry:map.entrySet()) 
    {
        insertGroups.setString(1, entry.getKey()); 
        insertGroups.setString(2, entry.getValue());
        insertGroups.setTimestamp(3, date);
        insertGroups.addBatch();

        if(++count % batch == 0)
        {
            insertGroups.executeBatch();    
        }
        insertGroups.executeBatch();

有人可以告诉我该怎么做吗?

0 个答案:

没有答案