首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > 其他数据库 >

java多线程向数据库写下数据

2013-09-25 
java多线程向数据库写入数据任务: 从sqlserver中将一个表A(约16W条数据)导到mysql中对应的一个表B中。思路:

java多线程向数据库写入数据

任务: 从sqlserver中将一个表A(约16W条数据)导到mysql中对应的一个表B中。

思路:分段获取A表中的数据后,用多个线程同时向B表中写入。

关键代码

public class Test1 {DbManager dm=null;MyThread my1=null;public Test1(){dm=new DbManager();System.out.println(dm.n+"----"+dm.residue); if(dm.n<1){//数据条数小于30000单线程处理my1=new MyThread(1,dm.sum);my1.start=1;my1.end=dm.residue;Thread t1=new Thread(my1);    t1.start();}else{//大于30000时    //起n个线程 每个处理30000条数据for (int i = 1; i <=dm.n; i++) {new Thread(new MyThread(i)).start();try {Thread.sleep(1);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}//处理掉余数my1=new MyThread(dm.n*30000+1,dm.sum);Thread t1=new Thread(my1);    t1.start();} }public static void main(String[] args) {//new Test1();//迁移完数据,自动关机 try {Runtime.getRuntime().exec("cmd  /c Shutdown -t 10");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}  }

经过多次测试:从sqlserver中读取16w条数据并写入mysql,耗时15min左右。

开始会报错: java heap space 

解决方案:(myeclipse)window->Preferences->Java->Installed JREs,选择当前的JRE,然后edit它;在新窗口里设置Default VM Arguments为 -Xms512M -Xmx512M即可


热点排行