Java大量数据插入pgsql_数据库循环添加数据和查询最新添加数据出现问题(java和pgsql)...

在Java定时任务中,循环分批从API获取数据并插入pgsql数据库时遇到问题,可能导致重复插入。即便尝试使用同步和事务也无法完全解决。通过在循环中设置检查点并暂停1秒,问题得到缓解。当状态为1时停止请求,否则更新数据并保存最新的查询时间以避免重复。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

这是个定时任务 循环分批请求数据后同步信息到数据库

如果不让线程停止 SynAppData synAppData = systemDao.getType(5);有机会获取到上一次插入的数据 然后就会重复插入数据 请教各位大神这是为什么???? 加同步和事务都试过了 也会有这个问题

int statusLocation = 0;

try {

while (statusLocation == 0) {

String getTime = "0";

//获取上次查询的时间

// Thread.sleep(1000); 加了这个就没问题

SynAppData synAppData = systemDao.getType(5);

if (synAppData != null) {

getTime = simpleDateFormatUrlDate.format(synAppData.getGettime());

}

String url = getServerUrl.getServerUrl();

String path = url + "/app/outside/getLocation?getTime=" + getTime;

String str = UrlConnection.doGet(path);

JSONObject jsonObject = JSONObject.parseObject(str);

if (jsonObject.getString("code").equals("200")) {

int status = jsonObject.getJSONObject("data").getInteger("status");

//status = 1 为获取数据完成,终止发送请求 0为未完成

if (status == 1) {

statusLocation = 1;

} else {

String dataList = jsonObject.getJSONObject("data").getString("data");

List tlocationList = JSONObject.parseArray(dataList, Tlocation.class);

if (tlocationList.size() > 0) {

//添加信息

systemService.AddLocation(tlocationList);

//跟新刚插入信息的时间最新的一条,下次查询则查询这时间之后的

systemDao.insertSynAppData(synAppData2); }

}

} else {

statusLocation = 1;

}

}

} catch (Exception e) {

e.printStackTrace();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值