文档章节

数据迁移

东门非树
 东门非树
发布于 2014/11/13 10:40
字数 862
阅读 62
收藏 4
点赞 0
评论 0

package com.bdjsi.bdto;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;

import org.apache.commons.lang.StringUtils;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;

public class DataSql {
 private Connection myConn = null;
 private Connection conn = null;
 private Statement stat = null;
 private Statement myStat = null;
 private PreparedStatement prst;

 /**
  * 查找数据库
  *
  * @return
  */
 public Connection getConn() {

  String url = "jdbc:oracle:thin:@10.1.2.11:1521:orcl";
  String user = "locationuser";
  String password = "jsbdyjy2013";
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   conn = DriverManager.getConnection(url, user, password);
  } catch (Exception e) {
  }
  return conn;
 }

 public Statement getStatement() {
  try {
   conn = this.getConn();
   if (conn != null)
    stat = conn.createStatement();
  } catch (Exception e) {
  }
  return stat;
 }

 public void close() {
  try {
   if (stat != null)
    stat.close();
   stat = null;
  } catch (Exception e) {
   e.printStackTrace();
  }
  try {
   if (conn != null)
    conn.close();
   conn = null;
  } catch (Exception e) {
  }
 }

 /**
  * 插入数据库
  *
  * @return
  */
 public Connection getMysqlConn() {
  //String url = "jdbc:oracle:thin:@192.168.0.10:1521:bdplat";
  String url = "jdbc:oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.10)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = bdplat)))";
  String user = "locationuser";
  String password = "jsbdyjy2013";
  try {
   Class.forName("oracle.jdbc.driver.OracleDriver");
   myConn = DriverManager.getConnection(url, user, password);
  } catch (Exception e) {
   e.printStackTrace();
  }
  return myConn;
 }

 public Statement getmyStatement() {
  try {
   myConn = this.getConn();
   if (myConn != null)
    stat = myConn.createStatement();
  } catch (Exception e) {
   e.printStackTrace();
  }
  return myStat;
 }

 public void myclose() {
  try {
   if (myStat != null)
    myStat.close();
   myStat = null;
  } catch (Exception e) {
  }
  try {
   if (myConn != null)
    myConn.close();
   myConn = null;
  } catch (Exception e) {
  }
 }

 // 查出所有终端id
 public List<String> QueyTable() {
  String sql = "select id from base_terminalinfo";
  ResultSet rs = null;
  ResultSet mysqlRs = null;
  BufferedWriter bw = null;
  conn = this.getConn();
  int count = 0;
  List<String> list = new ArrayList<String>();
  try {
   stat = conn.createStatement();
   mysqlRs = stat.executeQuery(sql);
   ResultSetMetaData mysqlRsmd = mysqlRs.getMetaData();
   rs = this.getStatement().executeQuery(sql);
   ResultSetMetaData rsmd = rs.getMetaData();
   int coulum = rsmd.getColumnCount();
   while (rs.next()) {
    String s = rs.getString("ID");
    list.add(s);

   }
  } catch (Exception e) {
   e.printStackTrace();
  } finally {
   try {
    if (stat != null)
     stat.close();
    if (rs != null)
     rs.close();
    if (bw != null)
     bw.close();
    if (conn != null)
     conn.close();
   } catch (Exception ex) {
   }
  }
  return list;
 }

 // 插入数据库
 public void InsertDB(String tableName, List<String> list) throws SQLException {
  myConn = this.getMysqlConn();
  myConn.setAutoCommit(false); 
   try {
    for (Iterator<String> i = list.iterator(); i.hasNext();) {
    String strRef = i.next();
    System.out.println(strRef);
    prst = this.getMysqlConn().prepareStatement(strRef);
    prst.addBatch();
    try {
    prst.executeBatch();
    }catch (Exception e) {
     e.printStackTrace();
     continue;
    }
    }
    myConn.commit();
   } catch (Exception e) {
    e.printStackTrace();
    
   } finally {
    try {
     if (myStat != null)
      myStat.close();
     if (myConn != null)
      myConn.close();
    } catch (Exception ex) {
     ex.printStackTrace();
    }
   }
  }

 public List<String> QueryDate(String myTableName,String[] msFields, String sTime) {
  String sql = "select * from " + myTableName + " where time > to_date('"
    + sTime + "' , 'yyyy-mm-dd hh24:mi:ss')";
  System.out.println("时间段的SQL:" + sql);
  String mysqlSql = "select * from " + myTableName;
  ResultSet rs = null;
  ResultSet mysqlRs = null;
  BufferedWriter bw = null;
  conn = this.getConn();
  int count = 0;
  List<String> list = new ArrayList<String>();
  long oldTime = System.currentTimeMillis();
  try {
   stat = conn.createStatement();
   mysqlRs = stat.executeQuery(mysqlSql);
   ResultSetMetaData mysqlRsmd = mysqlRs.getMetaData();
   rs = this.getStatement().executeQuery(sql);
   // 使用元数据获取一个表字段的总数
   ResultSetMetaData rsmd = rs.getMetaData();
   int coulum = rsmd.getColumnCount();
   while (rs.next()) {
    String mysqlField = "";
    String valueSql = "";
    for (int i = 0; i < coulum; i++) {
     String columName = rsmd.getColumnName(i + 1);
     String value = null;
     for (int j = 0; j < msFields.length; j++) {
      if (columName.equalsIgnoreCase(msFields[j])) {
       value = rs.getString(i + 1);
       if (columName.equals("TIME")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "to_date('"+ value.replaceAll("\\'", "\\\\'")+ "' , 'yyyy-mm-dd hh24:mi:ss'),";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("SERVERTIME")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "to_date('"+ value.replaceAll("\\'", "\\\\'")+ "' , 'yyyy-mm-dd hh24:mi:ss'),";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("ADDRESS")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'") + "',";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("S0")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'")+ ",";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("S1")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'")+ "',";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("S2")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'")+ "',";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("S3")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'")+ "',";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else if (columName.equals("S4")) {
        if (value != null && !value.equalsIgnoreCase("NULL")) {
         valueSql += "'"+ value.replaceAll("\\'", "\\\\'")+ "',";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       } else {
        if (value != null
          && !value.equalsIgnoreCase("NULL")) {
         valueSql += Integer.valueOf(value.replaceAll("\\'", "\\\\'")) + ",";
         mysqlField += mysqlRsmd.getColumnName(i + 1) + ",";
        }
       }

      }
     }
    }
    // 生成sql语句
    valueSql = valueSql.substring(0, valueSql.length() - 1);
    mysqlField = mysqlField.substring(0, mysqlField.length() - 1);
    sql = "insert into " + myTableName + "(" + mysqlField + ") "
      + " values(" + valueSql + ")";

    list.add(sql);
    // System.out.println(list);

   }
  } catch (Exception e) {

  } finally {
   try {
    if (stat != null)
     stat.close();
    if (rs != null)
     rs.close();
    if (bw != null)
     bw.close();
    if (conn != null)
     conn.close();
   } catch (Exception ex) {
   }
  }
  return list;
 }

 public static void main(String[] args) throws SQLException {
  String[] msFields = { "TIME", "WARNINGFLAG", "STATUS", "LON", "LAT",
    "VELOCITY", "DIRECTION", "DEM", "SERVERTIME", "ADDRESS", "I0",
    "I1", "I2", "I3", "I4", "I5", "I6", "I7", "I8", "I9", "I10",
    "I11", "I12", "I13", "I14", "D0", "D1", "D2", "D3", "D4", "S0",
    "S1", "S2", "S3", "S4", "ADDITIONAL" };
  String sTime = "2014/11/4 18:17:17";
  DataSql ds = new DataSql();
   List<String> list1 = ds.QueyTable();
   System.out.println("表LIST:"+list1);
   System.out.println("表个数:"+list1.size());

//  String sid = "14000625043";
//  String mysqlTableName = "BASE_T" + sid;
//  String msTableName = "BASE_T" + sid;
//  System.out.println(mysqlTableName);
//  List<String> list = ds.QueryDate(mysqlTableName, msTableName, msFields,
//    sTime);
//  System.out.println(list);
//  ds.InsertDB(mysqlTableName, list);

   for(int i=0;i<list1.size();i++){
   String sid = list1.get(i);
   String myTableName ="BASE_T"+sid;
   String msTableName="BASE_T"+sid;
   System.out.println("表名:"+myTableName);
   List<String> list =
   ds.QueryDate(myTableName,msFields,sTime);
   System.out.println(list);
   if(list.size()>0){
   ds.InsertDB(myTableName, list);
   }
   }
 }
 }

 

© 著作权归作者所有

共有 人打赏支持
东门非树
粉丝 0
博文 10
码字总数 4040
作品 0
南京
数据迁移工作总结

这两天,公司项目的excel模块需要重构,需要对历史数据进行迁移。 公司最近几次重大功能的上线,都涉及到数据迁移问题。可以说数据迁移是产品上线之前,重要的一个环节。数据迁移一般涉及的问...

DragonRiver2015 ⋅ 2015/05/28 ⋅ 0

mysql数据迁移

一、 数据迁移简介 所谓的数据迁移,就是指将原有的数据库系统迁移到另外一个业务系统上 数据迁移的原因是多种多样的,有可能是业务变更、硬件升级、平台切换或升级mysql数据库 迁移的注意事...

江山此夜寒 ⋅ 2014/05/06 ⋅ 0

上云迁移-海量数据迁移解决方案

摘要:传统数据存储在线下数据中心,存在成本高、运维难、性能难保障等等多方面的问题。阿里云提供闪电立方、OSS/NASImport、混合云存储阵列、镜像回源、302跳转、伪源站等六大解决方案为企业...

黄小凡 ⋅ 05/08 ⋅ 0

laravel 数据库迁移报错解决

创建数据迁移 使用 Artisan 命令行的 命令创建一个迁移:(在命令行模式下使用) 所有的迁移都被存放在 文件夹下,文件以时间戳命名以方便Laravel框架按时间来界定这些文件顺序. 您可以在创建迁...

ericSM ⋅ 2015/07/03 ⋅ 0

存储总量达20T的MySQL实例,如何完成迁移?

版权声明:本文由王亮原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/122 来源:腾云阁 https://www.qcloud.com/community 王亮,腾讯云高级工程师。2...

偶素浅小浅 ⋅ 2016/11/02 ⋅ 0

Windows 文件服务器迁移常用方法整理及优缺点

根据环境的不同文件服务器跨林迁移有多种迁移方法: 1. 创建林信任后通过ADMT迁移文件服务器 2. 条件允许的情况下文件服务器直接退域加域,此方法前提为AD中用户和组已通过ADMT迁移完成 以下...

没钱瞎逛逛 ⋅ 05/03 ⋅ 0

“怎么做好云迁移”? 深蓝云海资深架构师给你答案

在云计算市场规模不断扩大的大背景下,云迁移的需求越来越大且面临挑战。云迁移不是一个迁移软件工具,而是一种服务。前IBM资深架构师姜亚杰从云迁移的三个阶段、四个维度到八个步骤的方法,...

阿里云云栖社区 ⋅ 06/13 ⋅ 0

“怎么做好云迁移”? IBM资深架构师给你答案

在云计算市场规模不断扩大的大背景下,云迁移的需求越来越大且面临挑战。云迁移不是一个迁移软件工具,而是一种服务。IBM资深架构师姜亚杰从云迁移的三个阶段、四个维度到八个步骤的方法,简...

云迹九州 ⋅ 06/12 ⋅ 0

CVPR 2018 | Spotlight 论文:北京大学计算机研究所提出深度跨媒体知识迁移方法

  机器之心发布   作者:Xin Huang、Yuxin Peng      近日,来自北京大学计算机科学技术研究所的博士生黄鑫和彭宇新教授提出了一种新型的迁移学习方法:深度跨媒体知识迁移(Deep Cr...

机器之心 ⋅ 04/26 ⋅ 0

重置EntityFramework数据迁移到洁净状态

前言 翻译一篇有关EF数据迁移的文章,以备日后所用,文章若有翻译不当的地方请指出,将就点看,废话少说,看话题。【注意】:文章非一字一句的翻译,就重要的问题进行解释并解决。 话题引入 ...

jeffcky ⋅ 2016/01/18 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 42分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 45分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 54分钟前 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 56分钟前 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部