不同数据源之间的数据同步jdbc解决方案
最近项目中用到的数据要从一个数据源获取存进另一个数据源,简单的jdbc解决方案。
package com.sh.ideal.test.syns; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement; public class TableSyns { public static String[] TABLE={"TB_XSCJ_RWD","TB_XSCJ_HFD_CS"}; public static String[] TABLE_TARGET={"T_TEST","T_TEST1"}; public static void main(String[] args) { Connection conn = null;
Statement stmt = null;
ResultSet rs=null; Connection conn1 = null;
Statement stmt1 = null;
try {
//String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载SQLServerJDBC驱动
Class.forName("oracle.jdbc.driver.OracleDriver"); //实例化oracle数据库驱动程序(建立中间件)
String url = "jdbc:oracle:thin:@192.168.1.99:9083:PBD"; //@localhost为服务器名,sjzwish为数据库实例名
conn = DriverManager.getConnection(url, "pbd", "pbd"); //连接数据库,a代表帐户,a代表密码
stmt = conn.createStatement(); //提交sql语句,创建一个Statement对象来将SQL语句发送到数据库 String url1 = "jdbc:oracle:thin:@192.168.1.99:9083:PBD"; //@localhost为服务器名,sjzwish为数据库实例名
conn1 = DriverManager.getConnection(url1, "pbd", "pbd"); //连接数据库,a代表帐户,a代表密码
stmt1 = conn1.createStatement(); //提交sql语句,创建一个Statement对象来将SQL语句发送到数据库 for (int i = 0; i < TABLE.length; i++) { //查询数据用executeQuery
String sql="select * from "+TABLE[i];//执行查询,(ruby)为表名
rs = stmt.executeQuery(sql); ResultSetMetaData rsmd = rs.getMetaData();
int columnCount = rsmd.getColumnCount();
StringBuffer sbf=new StringBuffer(); for (int m = 1; m <= columnCount; m++) {
if(m==columnCount){
sbf.append(rsmd.getColumnName(m));
}else{
sbf.append(rsmd.getColumnName(m)+",");
}
}
while (rs.next()) {
StringBuffer sb=new StringBuffer();
for (int j = 1; j <= columnCount; j++) {
Object o=rs.getObject(j);
if(o==null){
o="";
}
if(j==(columnCount)){
sb.append("'"+o+"'");
}else{
sb.append("'"+o+"'").append(",");
}
}
String insertsql="insert into "+TABLE_TARGET[i]+"("+sbf.toString()+") values("+sb.toString()+")";
System.out.println(insertsql); stmt1.execute(insertsql); } //1代表当前记录的第一个字段的值,可以写成字段名。
//2代表当前记录的第二个字段的值,可以写成字段名。 //添加数据用executeUpdate
//stmt.executeUpdate("insert into ss values(7,'张学友')"); //修改数据用executeUpdate
//stmt.executeUpdate("update ss set name = '张曼玉' where id = 5"); //删除 数据用executeUpdate
//stmt.executeUpdate("delete from ss where id = 6"); } } catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e1) {
e1.printStackTrace();
}finally{
try {
//关闭数据库,结束进程
rs.close();
stmt.close();
conn.close(); stmt1.close();
conn1.close();
} catch (SQLException e) {
e.printStackTrace();
}
} }
}
不同数据源之间的数据同步jdbc解决方案的更多相关文章
- Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步。
Oracle GoldenGate (以下简称ogg)在异种移植os同一种db之间的数据同步. ogg要实现的功能: 同步可以细化到单个表,满足特定的where条件rows同步,称号column同步. ...
- SQLite与MySQL、SQLServer等异构数据库之间的数据同步
SQLite DBSync是开源嵌入式数据库SQLite的数据同步引擎,实现了SQLite与SQLite数据库之间以及SQLite与异构数据库(Oracle.MySQL.SQLServer)之间的增量 ...
- RabbitMQ数据同步一致性解决方案
1.概述 我们知道在使用RabbitMQ时,生产者将消息发布出去之后,消息是否顺利到达broker代理服务器呢?默认情况下发布操作没有任何信息返回给生产者,也就是生产者是不知道消息有没有顺利到达bro ...
- Windows和Linux之间 rsync数据同步
转载于 https://www.linuxidc.com/Linux/2014-01/95722p2.htm rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——rem ...
- Oracle数据表之间的数据同步
保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon c ...
- rsync实现windows和windows之间的数据同步
一:环境 1.同步对象:测试数据 2.服务端:Windows Server 2008 R2 3.客户端:Windows7 旗舰版64位 4.服务端rsync版本:cwRsyncServer_4.1.0 ...
- PDA手持终端扫描条码开单打印一体 结合后台电脑系统 数据同步交互解决方案
PDA通过扫描商品条码移动开单,实现便携式办公,伴随式销售,PDA能通过WIFI无线局域网.GPRS互联网直接与主机连接,让公司业务人员能随时随地了解公司产品信息,直接扫描商品条码,进行开单.入库.库 ...
- rsync进行不同服务器之间的数据同步
2台服务器上都要安装rsync,sudo yum install rsync. 把远程的数据备份到本机: rsync -rP --rsh=ssh root@IP:/data/tmp /data/tmp ...
- 基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具(Mongo2Es)
基于netcore实现mongodb和ElasticSearch之间的数据实时同步的工具 支持一对一,一对多,多对一和多对多的数据传输方式. 一对一 - 一个mongodb的collection对应一 ...
随机推荐
- Linux系统声卡问题
问题:Linux系统中有声卡设备,但是听不到声音 一.声卡驱动没有安装 1.通过插拔声卡查出声卡驱动 2.在相应的kernel中编译内核 修改保存.config文件,然后进行编译 make -j ma ...
- jdk与eclipse位数不一致出现的问题
今天运行eclipse时出现了如下问题: 后来去网上查了一下,如果jdk版本的位数和eclipse安装版本所需要的版本位数不相同,就会出现如图所示的问题,导致eclipse打不开. 1.查询jdk版本 ...
- C语言常用标准库函数
数学函数: 在math.h中 abs(x) :求整型数x的绝对值 cos(x):x(弧度)的余弦 fabs(x):求浮点数x的绝对值 ceil(x):求不小于x的最小整数 floor(x):求不大于x ...
- php使用fputcsv进行大数据的导出
为了实验大数据的导出,我们这里先自已创建一张大表,表结构如下: CREATE TABLE `tb_users` ( `id` int(11) unsigned NOT NULL AUTO_INCREM ...
- AsyncTask的缺陷
导语:在开发Android应用的过程中,我们需要时刻注意保障应用的稳定性和界面响应性,因为不稳定或者响应速度慢的应用将会给用户带来非常差的交互体验.在越来越讲究用户体验的大环境下,用户也许会因为应用的 ...
- PAT 1087 有多少不同的值(20)(STL—set)
1087 有多少不同的值(20 分) 当自然数 n 依次取 1.2.3.--.N 时,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少个不同的值?(注:⌊x⌋ 为取整函数,表示不超过 x 的最大自然数 ...
- hdu 2647 (拓扑排序 邻接表建图的模板) Reward
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=2647 老板给员工发工资,每个人的基本工资都是888,然后还有奖金,然后员工之间有矛盾,有的员工希望比某员 ...
- 异常检测(Anomaly Detection)
十五.异常检测(Anomaly Detection) 15.1 问题的动机 参考文档: 15 - 1 - Problem Motivation (8 min).mkv 在接下来的一系列视频中,我将向大 ...
- linux查看文件被哪个进程占用?
1> 如果文件是端口号 netstat -ntlp | grep portNum [root@localhost root]# netstat -ntlp Active Internet con ...
- 10分钟搭建 App 主流框架
搭建主流框架界面 0.达成效果 我们玩iPhone应用的时候,有没发现大部分的应用都是上图差不多的结构,下面的TabBar控制器可以切换子控制器,上面又有Navigation导航条 我们本文主要是搭建 ...