成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:184日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
老鸭窝毛片一区二区三区| 最新国产の精品合集bt伙计| 精品国产自在久精品国产| 亚洲高清免费在线| 一区二区在线视频观看| 精品精品欲导航| 韩国精品主播一区二区在线观看 | 欧美~级网站不卡| 国产精品1区2区3区在线观看| 色中色一区二区| 亚洲午夜三级在线| 亚洲视频成人| 国产一区二区三区香蕉| 欧美色爱综合网| 蜜臀99久久精品久久久久久软件| 99久久久精品| 亚洲精品一区二区精华| av激情综合网| 国产欧美一区二区三区在线看蜜臀 | 性刺激综合网| 亚洲制服丝袜在线| 男人天堂欧美日韩| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美亚洲一区二区在线| 韩国一区二区视频| 日韩一二在线观看| 91在线观看美女| 久久精品视频一区| 99精品视频免费| 亚洲成av人片观看| 日本伦理一区二区| 国产激情91久久精品导航 | 国产三级欧美三级| 午夜久久福利| 亚洲精品成人悠悠色影视| 亚洲一区二区三区精品动漫| 日本va欧美va精品发布| 在线播放中文一区| 97久久精品人人做人人爽50路| 国产欧美一区二区精品性色 | 欧美韩日一区二区三区四区| 欧美日韩亚洲一区二区三区在线| 国产精品久久久爽爽爽麻豆色哟哟| 在线成人av| 亚洲国产欧美日韩另类综合 | 色综合天天综合网国产成人综合天| 中文字幕欧美国产| 日韩一级不卡| 人妖欧美一区二区| 日韩情涩欧美日韩视频| 欧美不卡高清| 夜色激情一区二区| 在线视频欧美精品| 成人做爰69片免费看网站| 国产精品美女久久久久av爽李琼 | 91福利国产精品| 国产一区二区成人久久免费影院 | 在线观看免费成人| 成人免费视频视频在线观看免费| 国产日韩精品一区二区三区在线| 在线视频亚洲| 国产在线一区观看| 亚洲国产成人在线| 亚洲在线成人| 国产美女一区二区三区| 亚洲国产精品精华液2区45| 久久久亚洲人| 大桥未久av一区二区三区中文| 欧美国产一区视频在线观看| 亚洲一区自拍| 成人毛片在线观看| 樱桃视频在线观看一区| 在线播放国产精品二区一二区四区| 欧美不卡一卡二卡免费版| 天天做天天摸天天爽国产一区| 欧美一区二区久久| 亚洲高清电影| 国产综合成人久久大片91| 欧美激情综合在线| 欧洲精品一区二区三区在线观看| 91麻豆自制传媒国产之光| 亚洲成a人片在线观看中文| 5月丁香婷婷综合| 亚洲国产一区二区三区高清 | 亚洲国产精品第一区二区| 美女在线视频一区| 中文字幕不卡一区| 在线观看网站黄不卡| 色综合天天综合| 日韩经典中文字幕一区| 日本一区二区免费在线| 色94色欧美sute亚洲线路二| 91免费小视频| 蜜桃av一区二区| 亚洲素人一区二区| 欧美电影免费观看高清完整版在| 国产精品日韩一区二区| 成人av综合一区| 奇米综合一区二区三区精品视频| 国产精品人成在线观看免费| 欧美日韩成人一区| 亚洲一区一卡| 国模 一区 二区 三区| 国产精品乡下勾搭老头1| 一区二区三区四区乱视频| 欧美电影免费观看高清完整版在线 | 裸体一区二区三区| 国产精品国产馆在线真实露脸| 7799精品视频| 美日韩精品免费| 欧美视频日韩| 国产成人福利片| 五月天亚洲精品| 亚洲欧洲日韩在线| 欧美精品一区二区三区蜜桃视频| 色综合久久99| 一区二区三区四区五区视频| 91在线观看污| 国产伦精品一区二区三区免费| 一区二区三区精密机械公司| 久久精品视频一区| 欧美精品777| 久久久久网站| 在线亚洲成人| 韩国在线一区| 91在线精品秘密一区二区| 国产盗摄精品一区二区三区在线| 日韩黄色免费电影| 亚洲自拍偷拍综合| 国产精品嫩草影院av蜜臀| 精品免费国产一区二区三区四区| 国产精品亚洲综合| 好吊一区二区三区| 91在线免费播放| 国产99一区视频免费| 久久国产精品99精品国产| 国语精品中文字幕| 欧美国产专区| 99精品视频免费在线观看| 国产精品一区三区| 久久99精品国产麻豆婷婷| 五月天一区二区三区| 亚洲精品国产a久久久久久| 国产欧美精品区一区二区三区| 日韩免费福利电影在线观看| 欧美丰满一区二区免费视频| 欧美色倩网站大全免费| 看欧美日韩国产| 亚洲一区中文| 国产精品亚洲欧美| 国产日韩久久| 99综合在线| 国产欧美综合一区二区三区| 亚洲精品视频一区二区三区| 国产一区在线免费观看| 国产一区二区三区四区三区四| 欧美va天堂在线| 亚洲欧美亚洲| 91丝袜美女网| 91亚洲精品久久久蜜桃| 99久久99久久免费精品蜜臀| 成人精品国产免费网站| 国产成人超碰人人澡人人澡| 国产精品一级在线| 国产一区二区精品久久99| 国内久久精品视频| 精品在线视频一区| 国产综合色视频| 国产精品一级二级三级| 福利91精品一区二区三区| 国产成人免费xxxxxxxx| 国产成人福利片| 国产成人自拍网| 国产九色sp调教91| 国产精品一二三| 国产成人欧美日韩在线电影| 福利一区在线观看| 99国产一区二区三精品乱码| 97精品久久久午夜一区二区三区| 91色乱码一区二区三区| 欧美视频1区| 在线天堂一区av电影| 免费h精品视频在线播放| 一本大道久久精品懂色aⅴ| 欧美在线啊v一区| 欧美精品一二三| 日韩欧美一级二级三级久久久| 欧美成人video| 精品处破学生在线二十三| 久久毛片高清国产| 国产精品美女久久久久久| 亚洲色图.com| 性久久久久久久久久久久| 蜜乳av一区二区| 国产电影精品久久禁18| 欧美一区二区三区在线免费观看| 黄色日韩在线| 久久大逼视频| 56国语精品自产拍在线观看| 久久久99久久|