日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java程序如何提高oracle百萬級數據的insert效率

瀏覽:218日期:2024-01-03 17:58:26

問題描述

業務:需要從一個數據庫查詢百萬級數據,在java程序中插入到另一個oracle數據庫中代碼:

private final int persize = 1000; /** * 推送數據-流程 * @param tableCode 表名 * @param startTime 開始時間 * @param endTime 結束時間 * @return */ public boolean pushFrData(String username,String tableCode,String tableName,String startTime,String endTime){SimpleDateFormat sdf = new SimpleDateFormat('yyyy-MM-dd');System.out.println('導入數據到名錄庫!');boolean boo = false;//表名集合String [] str = tableCode.split(',');String [] names = tableName.split(',');startTime = startTime==''?'2000-01-01':startTime;endTime = endTime==''?getCurrentDate():endTime;//System.out.println('service 時間 '+startTime+' > '+endTime);String start_Time = 'to_date(’'+startTime+'’,’%Y-%m-%d’)';String end_Time = 'to_date(’'+endTime+'’,’%Y-%m-%d’)';System.out.println('選擇推送 '+str.length+' 張表');//遍歷表名集合for(int i = 0;i<str.length;i++){ System.out.println('所選數據表: '+str[i]); //字段集合 String [] arr = fillService.getIdenCode(str[i]); String iden_code = ''; //遍歷字段 for(int j = 0;j<arr.length;j++){iden_code += ''+arr[j]+','; } //表字段 iden_code = iden_code.substring(0,iden_code.length()-1); //System.out.println(str[i]+'總共 '+arr.length+' 個字段!'); //得到推送數據集合 String sql = 'select count(*) from '+str[i] +' where s_ext_timestamp >= '+start_Time+' and s_ext_timestamp < '+end_Time; System.out.println(sql); int table_size = Integer.valueOf(frDao.query(sql).get(0).toString()); //System.out.println(table_size/persize); int times = table_size%persize==0?table_size/persize:table_size/persize+1; for(int t = 1; t <= times;t++){int start = (t-1) * persize;List<Object[]> lists = getData(str[i], iden_code,startTime,endTime,start);//推送數據System.out.println('準備導出第 '+t+' 批數據');push(lists,str[i],iden_code);System.out.println('已導出第 '+t+' 批數據'); } try{if(table_size > 0){ addLog(username,str[i].toString(),names[i].toString(),table_size,'1',sdf.parse(startTime),sdf.parse(endTime));} }catch (ParseException e){System.out.println('日期格式轉換異常'); }}return boo; } /** * 推送數據 * @param lists 數據集 * @param table 表名 * @param iden_code 字段集 */ private int push(List<Object []> lists,String table,String iden_code){boolean boo = false;int count = 0;//遍歷數據結果集if(lists.size()>0){ for(int k = 0;k < lists.size();k++){Object [] obj = lists.get(k);String val = ''; //將數據轉換成String類型for(Object s:obj){ //val += '’'+s.toString()+'’,'; if(s != null){val += '’'+s.toString()+'’|'; }else{val += '’’|'; }}val = val.substring(0,val.length()-1);String etpsid = '';String [] iden = iden_code.split(',');String [] value = val.split('|');String val2 = '';//格式化數據(日期)if(iden.length == value.length){ //格式化sql語句的時間 for(int i = 0;i<iden.length;i++){//判斷字段是否是date類型if(getDateType(table, iden[i])){ //格式化字符串 防止出現datetime類型 1900-01-01 00:00:00.0的情況 if(value[i].length() > 4){String vv = value[i].substring(value[i].length()-3,value[i].length());if(vv.contains('.')){ val2 += 'to_date('+value[i].substring(0,value[i].length()-3)+'’,’YYYY-MM-DD HH24:MI:SS’),';}else{ val2 += 'to_date('+value[i]+',’YYYY-MM-DD HH24:MI:SS’),';} }else{val2 += '’’,'; }}else{ val2 += value[i]+',';}if('ETPSID'.equals(iden[i])){ etpsid = value[i];} } val2 = val2.substring(0,val2.length()-1);}else{ /*System.out.println(iden.length+' : '+value.length); for(int j = 0 ;j< value.length;j++){System.out.println(value[j]); }*/ System.out.println('推送數據和字段不一致');}String mlk_table = getMlkTable(table);String mlk_code = getMlkCode(iden_code,table);//插入數據sql//String sql = 'insert into '+table+'('+iden_code+') values ('+val2+')';//生成流水號String uuid = UUID.randomUUID().toString();uuid = uuid.replace('-','');val2 += ',’'+uuid+'’';String sql = 'insert into '+mlk_table+'('+mlk_code+') values ('+val2+')';if(etpsid != ''){ //System.out.println(etpsid); //工商增量數據按日依'企業唯一標識'為關鍵字,更新、追加至名錄庫表中 String s_sql = 'select * from '+mlk_table+' where 企業唯一標識 = '+etpsid; //System.out.println(s_sql); int s = mlDao.query(s_sql).size(); if (s > 0){String update_sql = '';String [] update_code = mlk_code.split(',');for(int j = 0;j < iden_code.split(',').length;j++){ //判斷字段是否是date類型 if(getDateType(table, iden[j])){//格式化字符串 防止出現datetime類型 1900-01-01 00:00:00.0的情況if(value[j].length() > 4){ String vv = value[j].substring(value[j].length() - 3, value[j].length()); if(vv.contains('.')){update_sql += update_code[j]+' = '+ 'to_date('+value[j].substring(0, value[j].length() - 3)+'’,’YYYY-MM-DD HH24:MI:SS’),'; }else{update_sql += update_code[j]+' = '+ 'to_date('+value[j]+',’YYYY-MM-DD HH24:MI:SS’),'; }}else{ update_sql += update_code[j]+' = '+ '’’,';} }else{update_sql += update_code[j]+' = '+ value[j]+','; } //update_sql += update_code[j]+' = '+update_val[j]+',';}update_sql += '流水號 = ’'+uuid+'’';update_sql = 'update '+mlk_table+' set '+update_sql+' where 企業唯一標識 = '+etpsid;//System.out.println('/////////// /n'+update_sql+'n');sql = update_sql;System.out.println('更新 '+mlk_table+' 標識 '+etpsid); }else{System.out.println('插入 '+mlk_table+' 標識 '+etpsid); }}//System.out.println(sql);try{ //循環執行sql mlDao.execute(sql); count++; System.out.println(table+' 推送第 '+count+' 條');}catch (Exception e){ System.out.println('sql執行異常!');} } System.out.println(table+' 表共插入 '+count+' 條數據!');}else{ System.out.println(table+' 表共插入 '+count+' 條數據!'); System.out.println('導入數據為空!');}return count; }

問題解答

回答1:

讀取的話可以多線程讀取,插入的話看以下鏈接:

https://segmentfault.com/sear...

https://segmentfault.com/sear...

回答2:

1、數據保存到數據庫可以使用批處理比如一次處理100條插入記錄2、不要一次性處理所有數據,可以將1W條數據分成兩個線程來處理,這樣可以充分利用cpu,同事不會導致大的阻塞

回答3:

建議使用JDBC的批處理模式,搜索以下關鍵字:addBatch(String query)executeBatch()

建議1000條左右作為一個batch提交事務。

回答4:

懶人方法:

在目標oracle數據庫中建立分布式鏈接,直接insert into 目標表 select sql語句

標簽: java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
四虎成人精品一区二区免费网站| 免费不卡在线观看| 日韩精品欧美精品| 蜜桃视频免费观看一区| 免费人成黄页网站在线一区二区| 亚洲一区二区av| 欧美欧美黄在线二区| 国产欧美一区二区三区米奇| 久久精品国产福利| 91精品国产调教在线观看| 欧美日韩国产在线观看网站 | 国产免费播放一区二区| 国产精品久一| 亚洲高清成人| 日本aⅴ精品一区二区三区| 久久在线91| 欧美日韩精品在线一区| 综合一区av| 国产一区二区色噜噜| 91精品二区| 欧美专区一区| 亚洲一区资源| 蜜臀精品久久久久久蜜臀| 欧美成人精品午夜一区二区| 久久久久久久久久久9不雅视频| 欧美日韩精品免费观看视欧美高清免费大片 | 久久国产欧美日韩精品| 丁香六月综合| 亚洲综合福利| 国产精品蜜芽在线观看| 亚洲综合电影一区二区三区| 国产精品麻豆成人av电影艾秋| xxxxx性欧美特大| 天堂va蜜桃一区二区三区| 久久99久久久精品欧美| 日韩中文在线电影| 亚洲精品乱码| 久久久国产精品网站| 久久久久99| 日本一区二区三区中文字幕| 一区二区三区四区日本视频| 日韩精品免费观看视频| 伊人精品一区| 国产精品对白久久久久粗| 亚洲欧洲一区二区天堂久久| 久久中文字幕一区二区| 99视频精品免费观看| 精品一区二区三区免费看 | 久久福利精品| 高清精品久久| 日韩1区2区3区| 99久久亚洲精品蜜臀| 久久av综合| 视频国产精品| 好吊视频一区二区三区四区| 国产一区二区三区四区五区| 亚洲精品福利| 亚洲婷婷在线| 极品av在线| 国产精品亚洲二区| 亚洲精品福利| 亚洲一区国产| 91久久国产| 久久国产日韩欧美精品| 亚洲欧美日本国产| 欧美亚洲国产激情| 国产自产自拍视频在线观看| 91九色综合| 亚洲视频国产精品| 香蕉国产精品| 在线日韩中文| 亚洲电影有码| 日韩国产一区二区| 色婷婷色综合| 久久久国产精品入口麻豆| 日韩成人在线看| 在线看片日韩| 视频一区在线视频| 亚洲成人不卡| www.51av欧美视频| 国产精品毛片久久| 国产一区二区三区亚洲综合| 欧美精品成人| 欧美aaaaaa午夜精品| 国产欧美日韩一区二区三区四区| 日韩avvvv在线播放| 日韩精品欧美成人高清一区二区| 蜜桃免费网站一区二区三区| 亚洲综合婷婷| 日韩av三区| 国产日韩中文在线中文字幕| 91亚洲精品在看在线观看高清| 18国产精品| 国产日产高清欧美一区二区三区 | 国产高清日韩| 久久免费视频66| 国产+成+人+亚洲欧洲在线| 精品视频网站| 日韩电影免费网址| 免费久久精品| 日韩影院在线观看| 日韩三级一区| 国产亚洲电影| 精品伊人久久| 中文在线免费视频| 神马午夜在线视频| 久久亚洲国产| 久久先锋影音| 日韩精品视频中文字幕| 国产精品一线| 国产成人精品一区二区三区免费| 日本少妇一区| 一区二区三区网站| 麻豆久久久久久久| 三上悠亚国产精品一区二区三区| 午夜久久tv| 欧美有码在线| 色网在线免费观看| 夜夜嗨一区二区三区| 日韩中文字幕| 国产精品一区二区免费福利视频 | 日韩一区二区久久| 日韩精彩视频在线观看| 你懂的亚洲视频| 日韩精品麻豆| 亚洲精品激情| 精品一区二区三区亚洲| 深夜福利视频一区二区| 久久一级电影| 日韩激情中文字幕| 成人黄色av| 日韩中文字幕一区二区三区| 日本午夜精品一区二区三区电影| 日本在线一区二区三区| 最新中文字幕在线播放| 免费久久精品视频| 国产中文欧美日韩在线| 最新亚洲一区| 久久不卡日韩美女| aⅴ色国产欧美| 国产乱码精品| 欧美日一区二区| 啪啪亚洲精品| 久久中文视频| 日韩av中文字幕一区二区 | 国产精品大片免费观看| 香蕉精品久久| 国产精品一区毛片| 欧美成人久久| 久久精品免费看| 蜜臀久久99精品久久久久久9 | 好吊日精品视频| 欧美激情福利| 蜜桃视频在线观看一区| 国产成人精品一区二区三区视频 | 蜜臀91精品国产高清在线观看| 欧美日本不卡高清| 日韩午夜一区| av资源新版天堂在线| 亚洲不卡视频| 欧美日韩在线网站| 美女精品视频在线| 亚洲精选成人| 亚洲黑丝一区二区| 精品三级国产| 日韩精品视频网| 久久中文字幕二区| 精品国产欧美日韩| 97久久亚洲| 丝袜脚交一区二区| 久久国产精品成人免费观看的软件| 国产精品巨作av| 亚洲精品日本| 久久午夜精品| 激情五月综合网| 欧美少妇精品| 国产黄色一区| 日本视频一区二区| 免费在线观看视频一区| 亚洲大片在线| 日韩精品一卡| 精品久久在线| 国产精品视频一区二区三区综合| 视频一区二区三区在线| 激情欧美国产欧美| 日韩大片在线播放| 国产精品福利在线观看播放| 国产精品videossex久久发布 | 石原莉奈一区二区三区在线观看| av资源亚洲| 国产一区二区三区久久| 欧美激情 亚洲a∨综合| 国产日韩一区二区三区在线播放| 色综合视频一区二区三区日韩 | 国产精区一区二区| 日韩精品一区二区三区中文| 首页亚洲欧美制服丝腿| 红桃视频欧美| 国产专区一区| 国产精品av一区二区|