Sql 批量更新和插入的方法 我正在寻找一些关于这个问题的建议和事情。 我从一个web服务调用中获得了数千条记录。 相关数据项包括id、startDate、termDate、name和其他一些字段。 数据库中填充了一些记录。 唯一性是id+startDate+termDate,请注意,可能有许多相同的id,但startDate和/或termDate不同
对于来自web服务调用的记录,我需要找到与唯一约束匹配的记录,并对这些记录进行更新。 对于不在db中的web服务记录(id+startDate+termDate),我需要插入该记录 应用程序当前使用iBatis。 我需要一些关于“记录是否存在”exist例程的好方法的指导,以及如何跟踪需要用于更新和插入的web服务记录 然后,一旦我有了这两套REOCRD,我想知道做db工作的最佳方法是什么。Sql 批量更新和插入的方法 我正在寻找一些关于这个问题的建议和事情。 我从一个web服务调用中获得了数千条记录。 相关数据项包括id、startDate、termDate、name和其他一些字段。 数据库中填充了一些记录。 唯一性是id+startDate+termDate,请注意,可能有许多相同的id,但startDate和/或termDate不同,sql,batch-file,Sql,Batch File,对于来自web服务调用的记录,我需要找到与唯一约束匹配的记录,并对这些记录进行更新。 对于不在db中的web服务记录(id+startDate+termDate),我需要插入该记录 应用程序当前使用iBatis。 我需要一些关于“记录是否存在”exist例程的好方法的指导,以及如何跟踪需要用于更新和插入的web服务记录 然后,一旦我有了这两套REOCRD,我想知道做db工作的最佳方法是什么。 最好是一次迭代一条记录并进行工作(插入或更新),还是制作一个包含所有记录的大型更新或插入字符串更好,因此
最好是一次迭代一条记录并进行工作(插入或更新),还是制作一个包含所有记录的大型更新或插入字符串更好,因此实际上,我将有两个db调用,一个用于更新,一个用于插入(但sql将非常庞大)将web服务中的记录保存在文本文件中。然后将批插入到空的临时表中。代码将根据rdbms的不同而变化 创建临时表后,请执行插入操作:
insert into my_table (id, startDate, termDate, name)
select t.id, t.startDate, t.termDate, t.name
from temp_table t
left outer join my_table my on
t.id = my.id
and
t.startDate = my.startDate
and
t.termDate = my.termDate
where my.id is null
以及更新:
update my_table
set
id = t.id,
startDate = t.startDate,
termDate = t.termDate,
name = t.name
from temp_table t
inner join my_table my on
t.id = my.id
and
t.startDate = my.startDate
and
t.termDate = my.termDate
where
id = t.id
and
startDate = t.startDate
and
termDate = t.termDate
上述未经测试的更新语法应在postgresql中使用。如果指定rdbms,我可以更改它。将web服务中的记录保存在文本文件中。然后将批插入到空的临时表中。代码将根据rdbms的不同而变化 创建临时表后,请执行插入操作:
insert into my_table (id, startDate, termDate, name)
select t.id, t.startDate, t.termDate, t.name
from temp_table t
left outer join my_table my on
t.id = my.id
and
t.startDate = my.startDate
and
t.termDate = my.termDate
where my.id is null
以及更新:
update my_table
set
id = t.id,
startDate = t.startDate,
termDate = t.termDate,
name = t.name
from temp_table t
inner join my_table my on
t.id = my.id
and
t.startDate = my.startDate
and
t.termDate = my.termDate
where
id = t.id
and
startDate = t.startDate
and
termDate = t.termDate
上述未经测试的更新语法应在postgresql中使用。如果您指定rdbms,我可以更改它