Springboot 整合 jdbctemplate

发布时间 2023-12-28 09:00:42作者: 试着看清楚

背景:

  程序重构上云,需要把原来在oracle 上1千多万 的数据迁移到postgrel 上,还要加载到redis,分为两步:

  1、数据传输(navicate 数据传输工具)

  2、加载到redis (springboot 整合jdbctemplate 从pq -> redis )

坑1:数据表数据不规范,很难同步

  原本想用py 脚本 把oracle 的数据读取到 pq,由于oracle 没有 limit而且数据量很大(> 1千万 ), 不能分批去拿数据同步到postgrel。

  请教了吕同事,他说这种情况一般可以根据 createtime 按月按年 批量拿,但是这个数据表的数据有很特殊,因为有个四五次导数据,也就是说,同一天内的数据可能有2-300万,一次性读回来可能内存装不下,所以最终还是使用了 navicate 传输工具 

坑2:jdbctemplate 的操作 字符串数据库语句的方法不熟悉

  (1)jdbcTemplate.queryForList()

  需求:想找一个可以执行sql语句可以返回List的方法,看名思意,我使用了

List<InterSms> persons = jdbctemplate.queryForList(sql, InterSms.class);
  当我run 的时候报错了,提示 expected是1,actual 2 (这个2是指我返回了两列数据)
  参考博主:jdbcTemplate的queryForList(超级坑)-CSDN博客

 

 

(2)我的解决办法:

List<InterSms> smss = jdbctemplate.query(sql, new BeanPropertyRowMapper<>(InterSms.class),参3);  参3是sql里面的?的参数