从Java合并到表的值

时间:2015-03-30 23:19:24

标签: java sql csv jdbc db2

我有一个java程序,它逐行读取csv文件,并使用DB2提供的Merge语句在表中执行MERGE。

例如,如果我在CSV中有1000行,则会运行executeUpdate 1000次。

我的挑战是我每小时运行一次这样的脚本,因此有可能新的条目会进入csv文件,或者值会更新或行可能会被删除(有时行将来会再次出现)

我认为我正在进行插入(如果不存在)并更新如果存在部分正确但我不知道如何为过去插入但不再在最新csv文件中的行执行删除部分?

这也是一个理想的情况,这里避免做1000插入语句我是否使用预处理语句?有人能举个例子吗?

String sql_merge = " MERGE INTO IM4BMX.IEMCOMPUTER_DETAILS AS A USING (VALUES ('"+ComputerID+"', '"+Environment+"')) AS A_TMP ( ComputerID , Environment) ON A.ComputerID = A_TMP.ComputerID   WHEN MATCHED THEN UPDATE SET ComputerID = '"+ComputerID+"', Environment = '"+Environment+"' WHEN NOT MATCHED THEN INSERT ( ComputerID , Environment ) VALUES (A_TMP.ComputerID, A_TMP.Environment )  ELSE IGNORE ";            

stmt.executeUpdate(sql_merge);

1 个答案:

答案 0 :(得分:0)

尝试在查询中添加when not matched子句。

实施例。什么时候不匹配               那么删除

如果您的CSV文件包含的数据与数据库中的数据不匹配,则应删除该行。

请查看此链接以获取更多信息。

Merge Statement Explained