java 同步数据之二

前一篇文章我写得迷迷糊糊的,现在重新优化了一下。有朋友提出说为什么不在sql那边做一个存储过程呢且数据结构都是一样的?,由于技术有限,而且两张表的数据结构是差不多的,一个是在oracle 一个是在mysql 的,

  1 // add by jim Sys_Ocd 2015-6-3
  2     public void sysncPortal_Ocd() {
  3
  4         Connection ocd_query_erpConn = null;
  5         Connection to_portalConn = null;
  6         // add by jim 20150527 add OCD_Test
  7         String form_form_ocd_configuration = "select org_vdc from OCD_Test";// 从mysql拿对应到资源池的数据
  8         String form_erp_ocd_sql = "select org_cid,vms,provider_vdc,org_vdc,cpu,ram,storage,storage_plus from OCD_Test ";// 从erp拿数据
  9         String portal_ocd_Insert_sql = "insert into OCD_Test(org_cid,vms,provider_vdc,org_vdc,cpu,ram,storage,storage_plus) values(?,?,?,?,?,?,?,?)";
 10         String portal_ocd_Update_sql = "update OCD_Test set org_cid=?,vms=?,provider_vdc=?,cpu=?,ram=?,storage=?,storage_plus=? where org_vdc =?";
 11
 12         log.info(form_erp_ocd_sql);
 13
 14         List ocdIdList = new ArrayList();
 15         PreparedStatement o_query_erp = null;
 16         PreparedStatement o_update_ocd = null;
 17         PreparedStatement o_insert_ocd = null;
 18         String org_cid = "";
 19         int vms = 0;
 20         String provider_vdc = "";
 21         String org_vdc = "";
 22         String cpu = "";
 23         String ram = "";
 24         int storage = 0;
 25         int storage_plus;
 26         ResultSet rs_from = null;
 27         //计数
 28         int count_insert = 0;
 29         int count_update = 0;
 30
 31         try {
 32             // 连接portal
 33             to_portalConn = this.getConnection(
 34                     datasource_to_portal[0].getDrv(),
 35                     datasource_to_portal[0].getUri(),
 36                     datasource_to_portal[0].getUid(),
 37                     datasource_to_portal[0].getPwd());
 38             // 连接erp
 39             ocd_query_erpConn = this.getConnection(datasource_from[0].getDrv(),
 40                     datasource_from[0].getUri(), datasource_from[0].getUid(),
 41                     datasource_from[0].getPwd());
 42             System.out.println(datasource_to_portal[0].getDrv()
 43                     + datasource_to_portal[0].getUri()
 44                     + datasource_to_portal[0].getUid()
 45                     + datasource_to_portal[0].getPwd());
 46             System.out.println(datasource_from[0].getDrv()
 47                     + datasource_from[0].getUri() + datasource_from[0].getUid()
 48                     + datasource_from[0].getPwd());
 49
 50             // 预编译sql语句
 51             o_query_erp = ocd_query_erpConn.prepareStatement(form_erp_ocd_sql);
 52             // update的方法是根据客户的ocd的名字去更新的,对应的Vcenter的OCD中
 53             o_update_ocd = to_portalConn
 54                     .prepareStatement(portal_ocd_Update_sql);
 55             o_insert_ocd = to_portalConn
 56                     .prepareStatement(portal_ocd_Insert_sql);
 57
 58             // 将portal上的数据添加到集合准备验证
 59             Statement o_to_portal_ = to_portalConn.createStatement();
 60             ResultSet ocd_configuration = o_to_portal_
 61                     .executeQuery(form_form_ocd_configuration);
 62             while (ocd_configuration.next()) {
 63                 String tmp = ocd_configuration.getString(1);
 64                 ocdIdList.add(tmp);
 65             }
 66
 67             // 加载数据
 68             rs_from = o_query_erp.executeQuery();
 69             if (rs_from != null) {
 70                 while (rs_from.next()) {
 71                     // select
 72                     // org_cid,vms,provider_vdc,org_vdc,cpu,ram,storage,storage_plus
 73                     // from OCD_Test
 74                     org_cid = UI18n.getUnicode(rs_from.getString(1), "gbk");
 75                     vms = rs_from.getInt(2);
 76                     provider_vdc = UI18n
 77                             .getUnicode(rs_from.getString(3), "gbk");
 78                     org_vdc = UI18n.getUnicode(rs_from.getString(4), "gbk");
 79                     // System.out.println(rs_from.getString(4));
 80                     // System.out.println(org_vdc);
 81                     cpu = rs_from.getString(5);
 82                     ram = rs_from.getString(6);
 83                     storage = rs_from.getInt(7);
 84                     storage_plus = rs_from.getInt(8);
 85
 86                     // 判断是否集合是否存在。存在 update 不存在 insert
 87                     if (!ocdIdList.contains(org_vdc)) {
 88                         // insert into
 89                         // OCD_Test(org_cid,vms,provider_vdc,org_vdc,cpu,ram,storage,storage_plus)
 90                         // values(?,?,?,?,?,?,?,?)";
 91                         o_insert_ocd.setString(1, org_cid);
 92                         o_insert_ocd.setInt(2, vms);
 93                         o_insert_ocd.setString(3, provider_vdc);
 94                         o_insert_ocd.setString(4, org_vdc);
 95                         o_insert_ocd.setString(5, cpu);
 96                         o_insert_ocd.setString(6, ram);
 97                         o_insert_ocd.setInt(7, storage);
 98                         o_insert_ocd.setInt(8, storage_plus);
 99                         int result = o_insert_ocd.executeUpdate();
100                         o_insert_ocd.clearParameters();
101                         count_insert += result;
102                         log.info(count_insert
103                                 + "  INERT OCD_CONFIGURATION: org_vdc="
104                                 + org_vdc + " OK!");
105                     } else {
106
107                         // update OCD_Test set
108                         // ,org_cid=?,vms=?,provider_vdc=?,cpu=?,ram=?,storage=?,storage_plus=?
109                         // where org_vdc =?";
110                         o_update_ocd.setString(1, org_cid);
111                         o_update_ocd.setInt(2, vms);
112                         o_update_ocd.setString(3, provider_vdc);
113                         o_update_ocd.setString(4, cpu);
114                         o_update_ocd.setString(5, ram);
115                         o_update_ocd.setInt(6, storage);
116                         o_update_ocd.setInt(7, storage_plus);
117                         o_update_ocd.setString(8, org_vdc);
118
119                         // System.out.println(o_update_ocd.toString());
120                         count_update += o_update_ocd.executeUpdate();
121                         log.info("UPDATE tbl_customer: org_vdc=" + org_vdc
122                                 + " OK!");
123
124                     }
125                 }
126             }
127
128         } catch (Exception e) {
129             if (ocd_query_erpConn != null) {
130                 try {
131                     ocd_query_erpConn.rollback();
132                 } catch (SQLException e1) {
133                     // TODO Auto-generated catch block
134                     e1.printStackTrace();
135                 }
136             }
137
138             e.printStackTrace();
139         } finally {
140             try {
141                 if (ocd_query_erpConn != null)
142                     ocd_query_erpConn.close();
143
144                 if (to_portalConn != null)
145                     to_portalConn.close();
146
147             } catch (SQLException e) {
148                 // TODO Auto-generated catch block
149                 e.printStackTrace();
150             }
151         }
152
153     }
时间: 2024-10-16 19:25:28

java 同步数据之二的相关文章

java 同步数据

1 public void Sync_data(){ 2 3 Connection ocd_query_erp = null; 4 Connection o_to_portal=null; 5 6 String form_form_ocd_configuration="select org_vdc from OCD_Test";//从mysql拿对应到资源池的数据 7 String form_erp_ocd_sql="select org_cid,vms,provider_v

Mongodb同步数据到hive(二)

Mongodb同步数据到hive(二) 1.            概述 上一篇文章主要介绍了mongodb-based,通过直连mongodb的方式进行数据映射来进行数据查询,但是那种方式会对线上的数据库产生影响,所以今天介绍第二种方式-BSON-based,即使用mongoexport将所需要的表导出到本地文件,文件个是默认为bson.然后将导出的bson文件put到HDFS文件系统里面,最后在hive里面创建相应的表来使用hive sql进行查询. 2.            导出文件 使

一步一步教你在 Android 里创建自己的账号系统(二)--同步数据以及设计账号页面

大家如果喜欢我的博客,请关注一下我的微博,请点击这里(http://weibo.com/kifile),谢谢 转载请标明出处(http://blog.csdn.net/kifile),再次感谢 在前一篇文章中(一步一步教你在 Android 里创建自己的账号系统(一)),我向大家介绍了如何在 Android 系统中创建自己的账户系统,接下来我会向大家详细介绍一下如何使用账户系统. (一)同步数据 通常而言,我们会在两种情况下使用我们的账号系统: (1)登陆验证 登陆验证其实是一个很实用的功能,试

day21 java 语言中的读取写入数据(二)

day21  java 语言中的读取写入数据(二) 一.概述: 使用IO流写文件,就体现的是下载的功能.所以说很有必要单独说一下. 二.写入功能:(下载) 写入功能同样也是被分隔为了字符流写入和字节流写入两个方式. (一):字符流写入数据 1.FileWriter类. 2.bufferedwriter类.带缓冲流 (二):字节流写入数据 1.FileOutputStream类. 2.bufferoutputstream类.带有缓冲流 三.具体实例     (一):字符流写入数据 //io数据流输

JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中,也是能看到他的,所以还是非常值得去学习的一个知识点的,我们直接开车了 一.Map概述 泛型< k,v> 键值对,映射关系 基本特点 该集合存储键值对,是一对一对往里存,而且要保证键的唯一性 1.添加 put(key ,values) putAll() 2.删除 clear() remove(ob

java基础知识(二)

1.关于static关键字总结: 1.不能在static修饰的方法中引用this变量,只能引用一些静态变量或方法,或new新的对象(可以定义局部变量). 简言之,静态方法或块中,只能引用静态的方法或变量. 2.类中的成员变量(static修饰)有缺省值,而类的定义的方法中的局部变量没有缺省值. 3.在类的构造器中,可以引用任何的静态或非静态的变量和方法,可以在非static方法中调用static方法. 4.static{}块中的代码在类装载中仅执行一次. 5.在7-7,A staticmetho

java提高篇(二二)-----LinkedList

摘自http://blog.csdn.net/chenssy/article/details/18099417  java提高篇(二二)-----LinkedList 一.概述 LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口的大小可变数组的实现,LinkedList是List接口链表的实现.基于链表实现的方式使得LinkedList在插入和删除时更优于ArrayList,而随机访问则比ArrayList逊色些. LinkedList实现所有可选

Java 容器 & 泛型:二、ArrayList 、LinkedList和Vector比较

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 继续上一篇的容器文章认识容器,泥瓦匠慢慢带你们走进List的容器解说.今天泥瓦匠想说说 ArrayList .LinkedList和Vector比较. 一.List回顾 序列(List),有序的Collection,正如它的名字一样,是一个有序的元素列表.确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 nu

Java知识复习(二)

如何格式化日期? SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); Date dat=new Date(); //把日期转化为字符串 String str=sdf.format(dat); System.out.println(str); //将字符串转化为日期 Java.util.Date d1=sdf.parse("yyyy-mm-dd"); String s = new Stri