java 处理大数据,请大家给点意见。 要求:1:从一个大概有上千万的表内取出数据;如何取高效。2:如何插入到另一个数据表内。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果是从一个表里面取数据有没有太复杂的选择条件的话,我觉得最直接的优化方法就是在选择条件上建立索引了。将选出的结果插入另一个表可以用insert into ... select 语句。可以把查询到得结果直接插入目的表。 谢谢各位。我是不同的数据库,可以使用insert into ...select ?现在慢,主要是要每条数据都得获取。大家看看有啥好招。谢谢各位了。 分段读取,设置游标,读取后能不释放就不释放掉,就像hibernate持久化一样。比如开始只需要前50条,就取前50,锁定游标,当有获得50条之后的数据需求的时候,就再次读取,并在原有数据载体基础上追加数据,以此类推。当要1次读取10000条以上数据的时候,就用多线程或单线程读取,尽量不要同步程序,取得之后将数据用接口以消息的方式传回。 必须用JAVA吗2个数据库的表的格式是否有一样了,如果不一样你在第一个数据库中创建一个临时表(表结构和你第2个数据库的表一样),用存储过程把头一个表的数据存入你的临时表中,然后用工具,显示创建SQL语言(oracle用pl/sql),再把这个SQL语言放在你第2个数据库里执行下,我觉的这样应该最快了 用ETL,一直跑。想快速估计是不可能的。oracle有ETL工具,SQL Server也有…… 他的问题是有N多个表,现在他想从N个表中取大量的数据然后放到一张表中。没错,就是ETL哦。 楼主是要问1、如何写高效的sql语句?2、还是如何高效的从一个数据库搬迁数据到另一个数据库?1、可以去google搜索看看,sql方面的优化有很多内容2、你可以先找到目前程序的瓶颈:如果你数据库允许长时间链接那么你可以打开一个游标一直读取,不要重复打开游标,写入数据库也同样打开一个游标一直写入,直到全部完成再关闭游标Connection con_src;//源数据库Connection con_tag;//目标数据库PreparedStatement pstmt_src = con_src.prepareStatemet("select ");PreparedStatement pstmt_tag = con_tag.prepareStatemet("insert ");ResultSet rs1 = pstmt.executeQuery();while(rs1.next()){ pstmt_tag.setString(1,rs1.get(1)); …… pstmt_tag.executeUpdate();}rs1.close();pstmt_src.close();pstmt_tag.close;con_src.close();con_tag.close(); 呵呵!要快的话只能用多线程了,线程分段读取、操作,能充分利用CPU资源。。、 scanner的问题 接口如何实现多继承 利用数学函数,打印以下Sin的图形 在线等待:求助,为什么在我本地(TOMCAT)上面没有问题,但部署在WebSphere却报这种错误啊??? exe4j连结多个class文件的制作方法 如何把byte值加上一个0x的前缀? 新手,一进门就被撞晕了! 为什么我点击按钮以后,我的list会自动扩展?这个问题折磨我两天了!!! 初学者问题,请指教! 我要自学网上的象棋游戏开发,开发过的小伙伴进来交流下哈~~~~ java新手请教下面程序的输出解释 while循环问题
insert into ... select 语句。可以把查询到得结果直接插入目的表。
比如开始只需要前50条,就取前50,锁定游标,当有获得50条之后的数据需求的时候,就再次读取,并在原有数据载体基础上追加数据,以此类推。
当要1次读取10000条以上数据的时候,就用多线程或单线程读取,尽量不要同步程序,取得之后将数据用接口以消息的方式传回。
oracle有ETL工具,SQL Server也有……
没错,就是ETL哦。
1、如何写高效的sql语句?
2、还是如何高效的从一个数据库搬迁数据到另一个数据库?
1、可以去google搜索看看,sql方面的优化有很多内容
2、你可以先找到目前程序的瓶颈:
如果你数据库允许长时间链接那么你可以打开一个游标一直读取,不要重复打开游标,写入数据库也同样打开一个游标一直写入,直到全部完成再关闭游标Connection con_src;//源数据库
Connection con_tag;//目标数据库
PreparedStatement pstmt_src = con_src.prepareStatemet("select ");
PreparedStatement pstmt_tag = con_tag.prepareStatemet("insert ");
ResultSet rs1 = pstmt.executeQuery();while(rs1.next()){
pstmt_tag.setString(1,rs1.get(1));
……
pstmt_tag.executeUpdate();
}
rs1.close();
pstmt_src.close();
pstmt_tag.close;
con_src.close();
con_tag.close();