程式碼實現從某個表中查詢資料插入到另一個表中
阿新 • • 發佈:2019-02-19
前提條件&產生問題原因:
1、由於資料量比較大,又沒有使用hadoop等方式處理資料。所以使用分表的形式。分表的看另一篇文章。
2、然後,需求變了,臥槽~~~需求又變了!!!不用分表了,需要把所有的分表資料,插入到一張表中。當然,這所有表的欄位要求一致。
///稍等,待會再寫,先寫一篇,如果不用分散式,處理大量資料的問題。
//回來了寫完了,
package com.tujia.ecd.table; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.junit.Before; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.core.RowMapper; import com.tujia.ecd.entity.BabyProjects; public class ExaminationRemind { //private JdbcTemplate localTemplate; private JdbcTemplate onlineTemplate; @Before public void setup(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); //localTemplate = (JdbcTemplate) context.getBean("ecdItemRecordSlaverTemplate"); onlineTemplate = (JdbcTemplate) context.getBean("ecdItemRecordSlaverTemplate"); } @Test public void examinationRemind(){ int tableNumByDocid = 512; String tableNameByDocid = "baby_projects_odocid"; int tableNumByProjectid = 512; String tableNameByProjectid = "baby_projects_projectid"; int tableNumByUid = 512; String tableNameByUid = "baby_projects_uid"; //int record_visit = 512; //String record_visit_uid = "record_visit_uid"; List<BabyProjects> showList = new ArrayList<BabyProjects>(); List<BabyProjects> showAllBabyProjectByDocid = showAllBabyProject(tableNameByDocid,tableNumByDocid); List<BabyProjects> showAllBabyProjectByProjectid = showAllBabyProject(tableNameByProjectid,tableNumByProjectid); List<BabyProjects> showAllBabyProjectByUid = showAllBabyProject(tableNameByUid,tableNumByUid); //List<BabyProjects> showAllrecord_visit = showAllBabyProject(record_visit_uid,record_visit); showList.addAll(showAllBabyProjectByDocid);//35 showList.addAll(showAllBabyProjectByProjectid);//1121 showList.addAll(showAllBabyProjectByUid);//1121 System.out.println("查詢出的數量是:"+showAllBabyProjectByUid.size()+"條"); //List<BabyProjects> showAllRepeat = removeRepeat(showList); //System.out.println("去掉重複後的數量:"+showAllRepeat.size()+"條"); addAll(showAllBabyProjectByProjectid); } public List<BabyProjects> showAllBabyProject(final String tableName,final int tableNum){ List<BabyProjects> showList = new ArrayList<BabyProjects>(); for(int i=0;i<tableNum;i++){ String tab = String.format(tableName+"_%02x",i); String sql = "select * from "+tab+" "; List<BabyProjects> oneTable = onlineTemplate.query(sql, new RowMapper<BabyProjects>(){ @Override public BabyProjects mapRow(ResultSet rs, int num) throws SQLException { BabyProjects babyProject = new BabyProjects(); babyProject.setProjectprice(rs.getString("projectprice")); babyProject.setId(rs.getLong("id")); babyProject.setProjectid(rs.getLong("projectid")); babyProject.setProjectName(rs.getString("projectname")); babyProject.setOdocid(rs.getLong("odocid")); babyProject.setOtime(rs.getLong("otime")); babyProject.setUid(rs.getLong("uid")); babyProject.setRecordid(rs.getLong("recordid")); //babyProject.setDocName(rs.getString("")); babyProject.setTreatid(rs.getLong("treatid")); babyProject.setHid(rs.getInt("hid")); //babyProject.setProjectCode(rs.getString("")); return babyProject; } }); showList.addAll(oneTable); } return showList; } public void addAll(final List<BabyProjects> listAll){ for(final BabyProjects babyProject : listAll){ final String sql = "insert into baby_projects (projectprice,id,projectid,projectname,odocid,otime,uid,recordid,treatid,hid,status) values(?,?,?,?,?,?,?,?,?,?,1)"; onlineTemplate.update(new PreparedStatementCreator() { @Override public java.sql.PreparedStatement createPreparedStatement( java.sql.Connection con) throws SQLException { java.sql.PreparedStatement ps = con.prepareStatement(sql); int i = 0; ps.setString(++i, babyProject.getProjectprice()); ps.setLong(++i, babyProject.getId()); ps.setLong(++i, babyProject.getProjectid()); ps.setString(++i, babyProject.getProjectName()); ps.setLong(++i, babyProject.getOdocid()); ps.setLong(++i, babyProject.getOtime()); ps.setLong(++i, babyProject.getUid()); ps.setLong(++i, babyProject.getRecordid()); ps.setLong(++i, babyProject.getTreatid()); ps.setLong(++i, babyProject.getHid()); return ps; } }); } } public List<BabyProjects> removeRepeat(final List<BabyProjects> listAll){ List<BabyProjects> showList = new ArrayList<BabyProjects>(); Set<BabyProjects> h = new HashSet<BabyProjects>(listAll); showList.addAll(h); return showList; } /* * public static void removeDuplicate(List list) { HashSet h = new HashSet(list); list.clear(); list.addAll(h); System.out.println(list); } * * public void addAll(List<BabyProjects> listAll){ for(BabyProjects babyProject : listAll){ templateSqlPrepare<BabyProjects> tsp = (babyProject, "baby_projects"); localTemplate.update(tsp.getPreparedStatementCreator(tsp.getSqlForInsert())); } }*/ }
恩,就是上面的程式碼,很多東西,都跟我寫的另一篇,分表,重複了,所以,這裡我就不多說了,偷懶一下~~。
: p