導航:首頁 > 網路數據 > Java大數據批量更新

Java大數據批量更新

發布時間:2023-08-03 13:24:05

java開發:如何對多條資料庫記錄同時修改

不要用循環,那樣效率低,你先吧用修改的記錄id找到,然後
update xxxxxx where id in(?,?,?……),「?」就是你要修改的記錄的id
選中就用checkbox

② java,jdbc,大量數據update更新效率很慢,哪位大神可憐可憐我吧

mysql使用jdbc的批量插入需要在連接Mysql的地方加上rewriteBatchedStatements=true
,也就是spring.datasource.url = jdbc:mysql://192.168.15.44:3306/ml_test?useSSL=false&useUnicode=true&characterEncoding=utf-8&rewriteBatchedStatements=true
,如果不加這個的話,和自己循環插入差不多

③ java mysql mybatis批量更新怎麼弄

Java mysql mybatis批量更新資料庫,採用以下寫法即可執行,但是資料庫連接必須配置:&allowMultiQueries=true

例如:jdbc:mysql://192.168.1.236:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
<updateid="batchUpdate"parameterType="java.util.List">

<foreachcollection="list"item="item"index="index"open=""close=""separator=";">
updatetest
<set>
test=${item.test}+1
</set>
whereid=${item.id}
</foreach>

</update>

MyBatis是支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis使用簡單的XML或註解用於配置和原始映射,將介面和Java的POJOs(Plan Old Java Objects,普通的Java對象)映射成資料庫中的記錄.

④ java多線程更新資料庫批量的數據信息嗎怎麼實現

//將資料庫中的數據條數分段
public void division(){
//獲取要導入的總的數據條數
String sql3="SELECT count(*) FROM [CMD].[dbo].[my1]";
try {
pss=cons.prepareStatement(sql3);
rss=pss.executeQuery();

while(rss.next()){
System.out.println("總記錄條數:"+rss.getInt(1));
sum=rss.getInt(1);
}
//每30000條記錄作為一個分割點
if(sum>=30000){
n=sum/30000;
resie=sum%30000;
}else{
resie=sum;
}

System.out.println(n+" "+resie);

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
線程類
public MyThread(int start,int end) {
this.end=end;
this.start=start;
System.out.println("處理掉余數");
try {

System.out.println("--------"+Thread.currentThread().getName()+"------------");
Class.forName(SQLSERVERDRIVER);
System.out.println("載入sqlserver驅動...");
cons = DriverManager.getConnection(CONTENTS,UNS,UPS);
stas = cons.createStatement();
System.out.println("連接SQLServer資料庫成功!!");

System.out.println("載入mysql驅動.....");
Class.forName(MYSQLDRIVER);
con = DriverManager.getConnection(CONTENT,UN,UP);
sta = con.createStatement();
// 關閉事務自動提交
con.setAutoCommit(false);
System.out.println("連接mysql資料庫成功!!");

} catch (Exception e) {
e.printStackTrace();
}
// TODO Auto-generated constructor stub
}

public ArrayList<Member> getAll(){
Member member;
String sql1="select * from (select row_number() over (order by pmcode) as rowNum,*" +
" from [CMD].[dbo].[my1]) as t where rowNum between "+start+" and "+end;
try {
System.out.println("正在獲取數據...");
allmembers=new ArrayList();
rss=stas.executeQuery(sql1);
while(rss.next()){
member=new Member();
member.setAddress1(rss.getString("address1"));
member.setBnpoints(rss.getString("bnpoints"));
member.setDbno(rss.getString("dbno"));
member.setExpiry(rss.getString("expiry"));
member.setHispoints(rss.getString("hispoints"));
member.setKypoints(rss.getString("kypoints"));
member.setLevels(rss.getString("levels"));
member.setNames(rss.getString("names"));
member.setPmcode(rss.getString("pmcode"));
member.setRemark(rss.getString("remark"));
member.setSex(rss.getString("sex"));
member.setTelephone(rss.getString("telephone"));
member.setWxno(rss.getString("wxno"));
member.setPmdate(rss.getString("pmdate"));
allmembers.add(member);
// System.out.println(member.getNames());
}
System.out.println("成功獲取sqlserver資料庫數據!");
return allmembers;

} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("獲取sqlserver資料庫數據發送異常!");
e.printStackTrace();
}
try {
rss.close();
stas.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

public void inputAll(ArrayList<Member> allmembers){
System.out.println("開始向mysql中寫入");
String sql2="insert into test.my2 values (?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
try {
ps=con.prepareStatement(sql2);
System.out.println("-------------------------等待寫入數據條數: "+allmembers.size());
for(int i=0;i<allmembers.size();i++){
ps.setString(1, allmembers.get(i).getPmcode());
ps.setString(2, allmembers.get(i).getNames());
//System.out.println(allmembers.get(i).getNames());
ps.setString(3, allmembers.get(i).getSex());
ps.setString(4, allmembers.get(i).getTelephone());
ps.setString(5, allmembers.get(i).getAddress1());
ps.setString(6, allmembers.get(i).getPmdate());
ps.setString(7, allmembers.get(i).getExpiry());
ps.setString(8, allmembers.get(i).getLevels());
ps.setString(9, allmembers.get(i).getDbno());
ps.setString(10, allmembers.get(i).getHispoints());
ps.setString(11, allmembers.get(i).getBnpoints());
ps.setString(12, allmembers.get(i).getKypoints());
ps.setString(13, allmembers.get(i).getWxno());
ps.setString(14, allmembers.get(i).getRemark());
//插入命令列表
//ps.addBatch();
ps.executeUpdate();
}
//ps.executeBatch();
con.commit();

ps.close();
con.close();
this.flag=false;
System.out.println(Thread.currentThread().getName()+"--->OK");
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.println("向mysql中更新數據時發生異常!");
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
while(true&&flag){
this.inputAll(getAll());
}
}

⑤ java 如何批量修改一張表裡面多條數據的某個欄位的值,需要修改的欄位值是自定義的。

直接數據抄庫操作嘛襲 全部改一樣的就用update dealers set buynum where 。。
不一樣的話就存儲結構吧。
用java更新 最好用批處理PreparedStatement stamt.. "update ??????"

for(){ stamt.addBatch(); }
stamt.executeBatch();

⑥ java資料庫批量更新操作

存儲過程的可移植性差,不如直接寫SQL進行表更新,直接update表數據,如果這種方法效率低的話,還可以將表的『積分』欄位直接幹掉,再將該欄位加回到表中就可以了.

閱讀全文

與Java大數據批量更新相關的資料

熱點內容
能打開文件夾找不到文件夾目錄 瀏覽:482
網頁app後綴是什麼格式 瀏覽:752
伺服器出廠ip和密碼忘了怎麼辦 瀏覽:784
桌面里的文件 瀏覽:768
數據線變白色怎麼回事 瀏覽:500
iphone5usb充電 瀏覽:103
哪個網站買保險可靠 瀏覽:617
奇跡暖暖安卓ios同步嗎 瀏覽:460
為什麼編程的人掉頭發 瀏覽:953
沒有編程基礎如何開發安卓 瀏覽:182
win10不能用pin碼登錄密碼錯誤 瀏覽:663
薄荷圖床顯示圖片文件失效 瀏覽:2
linux監控文件大小 瀏覽:740
javaweb項目壓力測試 瀏覽:622
小米電視誤刪除系統文件 瀏覽:277
excel導入多個文件 瀏覽:136
天眼從哪裡導數據 瀏覽:252
macqq文件保存在哪裡 瀏覽:215
vmx找不到文件 瀏覽:701
機械制圖和編程哪個難 瀏覽:123

友情鏈接