如何用JAVA把数据批量从oracle中取出,再批量地插入到mysql中
1.如何批量地从oracle中取出数据,因为数据量大,所以要分批,在mysql中有limit参数,如:select * from table_name limit n, m就是从第n条记录取m条记录。但在oracle中不知道如何写SQL语句,求教中!
2.在JAVA中批量更新数据要如何操作,用PreparedStatement还是Statement?具体如何写?
问题点数:0、回复次数:12Top
1 楼andunkafei(安顿咖啡)回复于 2004-08-04 12:53:02 得分 0
1、数据量大不要紧。
先用PL/SQL Developer将数据导出成csv格式,然后在excel中生成insert语句,最后在mysql中执行这个脚本就可以了,跟数据量没关系。
2、在JAVA中批量更新数据要如何操作,用PreparedStatement。Top
2 楼noscar(java+Linux)回复于 2004-08-04 13:44:33 得分 0
要用 PreparedStatement ,有一个 绑定方法,(我记不得了),你去查一查 API 吧....
Top
3 楼lshoo(廖师虎)回复于 2004-08-04 15:38:27 得分 0
查API还是不得要领啊,请指教啊!!!!!!!!Top
4 楼lshoo(廖师虎)回复于 2004-08-04 20:40:40 得分 0
要用JAVA写成程序,每天自动运行来更新数据,请指点啊!!!Top
5 楼power_zh(专门在技术区灌水赚分)回复于 2004-08-04 22:02:38 得分 0
upTop
6 楼lshoo(廖师虎)回复于 2004-08-06 17:13:18 得分 0
我现在暂时写成一条条更新,继续等待中。。。。Top
7 楼lakesea(飘渺海)回复于 2004-08-06 17:30:14 得分 0
其实用一个sql就够了。
把oracle中的数据取出来,然后生成一个如下格式的sql,再执行,这样可能效率要高些吧。
INSERT INTO `brand_m` (`BRAND_ID`, `BRAND_INFO`) VALUES
(1,'禁止合闸,线路有人工作'),
(2,'禁止合闸,有人工作'),
(3,'在此工作'),
(4,'止步,高压危险'),
(5,'从此上下'),
(6,'禁止攀登,高压危险');
Top
8 楼lshoo(廖师虎)回复于 2004-08-06 23:59:48 得分 0
我就是这样的,只是一次更新一条记录而已,现在想一次批量更新100或更多,这样的效率会更高!Top
9 楼tyrone98(林林)回复于 2004-08-07 07:16:03 得分 0
建立oracle的连接后与mysql连接后,使用setDefaultRowPrefetch() 与 setDefaultBatchValue()。
对oracle的ResultSet使用setFetchSize()使每一次多读取记录。
使用getString(1)用数字来读取字段值。
对mysql的connection设置
con.setAutoCommit(false);手工进行commit ;
使用PreparedStatement来进行更新操作.
PreparedStatement stmt = con.preparedStatement( "insert into TAB values( ? ) " ) ;
stmt.setString( 0 , 需更新的值 ) ;
stmt.addBatch() ;//批更新提高效率
然后自已来确定多少条提交一次。一般定成500-2000条,超过2000条后对性能的改变并不大,越大数据库需要更多的回滚区。
Top
10 楼yufeiyxl(与飞)回复于 2004-08-07 08:28:38 得分 0
我认为批量更新容易实现,问题是不同数据库直接的连接我不懂Top
11 楼blasterboy(自由给与我力量。支持O'Reilly)回复于 2004-08-07 08:51:58 得分 0
rownumTop
12 楼lshoo(廖师虎)回复于 2004-08-09 11:15:21 得分 0
tyrone98(林林),在API里找不到setDefaultRowPrefetch() 与 setDefaultBatchValue(),commit写在哪里?可不可以再说得详细点?哪里有相关的资料下载?我的QQ:56430587,msn:lshoo@hotmail.com。
Top




