Java JDBC пакетной вставки только новые строки

Это не удобно использовать, потому что в с # нельзя определить переменную, начинающуюся с числа. Добавьте префикс к клавишам.

Или попробуйте:

string json = "
{ daily:[
  { key: '1337990400000', val:443447 },
  { key: '1338076800000', val:444693 },
  { key: '1338163200000', val:452282 },
  { key: '1338249600000', val:462189 },
  { key: '1338336000000', val:466626 }]
}";

public class itemClass
{
  public string key; // or int
  public int val;
}

public class items
{
  public itemClass[] daily;
}

items daily = (new JavascriptSerializer()).Deserialize<items>(json);

Затем вы можете:

var itemValue = items.Where(x=>x.key=='1338163200000').Select(x=>x.val).FirstOrDefault();
1
задан revy 17 January 2019 в 11:25
поделиться

2 ответа

Один из вариантов - добавить уникальное ограничение на три столбца в вашей таблице, которые определяют уникальность. Затем попытка вставить повторяющуюся запись должна привести к исключению Java. Но это может привести к сбою всей партии. Если вы хотите другой вариант, вы можете изменить свой запрос следующим образом:

INSERT INTO mytable
SELECT ?, ?, ?
WHERE NOT EXISTS (SELECT 1 FROM mytable
                  WHERE id = ? AND col2 = ? AND col3 = ?);

К этому запросу вы привязываете значения дважды следующим образом:

preparedStatement.setInt(1, id);
preparedStatement.setString(2, col2);
preparedStatement.setString(3, col3);
preparedStatement.setInt(4, id);
preparedStatement.setString(5, col2);
preparedStatement.setString(6, col3);
0
ответ дан Tim Biegeleisen 17 January 2019 в 11:25
поделиться

Я также нашел другое возможное решение с помощью слияния:

String sqlInsertStub = "MERGE INTO mytable a USING (SELECT ? ID) b " +
                        "ON (a.ID = b.ID)" +
                        "WHEN NOT MATCHED " +
                        "THEN INSERT (ID, COL1, COL2) VALUES(b.ID, ?, ?)";
0
ответ дан revy 17 January 2019 в 11:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: