从一个数据库导入到另一个数据库中

package cn.dao;

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.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 org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import org.logicalcobwebs.proxool.configuration.JAXPConfigurator;

/**
 * yicha 
 * Dec 11, 2008 
 */

public class DataSql {
 private Logger logger=Logger.getLogger(DataSql.class);
 
 private Connection mysqlConn=null;
 private Connection conn = null;
 private Statement stat  = null;
 private Statement mysqlStat=null;
 /**
  * jdbc链接
  * @return
  */
 public Connection getConn(){  
  String url="jdbc:microsoft:sqlserver://192.168.0.214:1433;DatabaseName=unionfee";
  String user="unionfee";
  String password="unionfee";
  try{
   Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
   conn=DriverManager.getConnection(url, user, password);
  }catch(Exception e){
   logger.error("Connecter=>getConnection error: "+e);
  }
  return conn;
 }
 /**
  * mysql 的jdbc链接
  * @return
  */
 public Connection getMysqlConn(){  
  String url="jdbc:mysql://192.168.0.225/unionfee?useUnicode=true&characterEncoding=utf8";
  String user="root";
  String password="root";
  try{
   Class.forName("com.mysql.jdbc.Driver");
   mysqlConn=DriverManager.getConnection(url, user, password);
  }catch(Exception e){
   logger.error("Connecter=>getConnection error: "+e);
  }
  return mysqlConn;
 }
 
 public Statement getStatement(){
  try{   
   conn = this.getConn();
   if(conn!=null)stat = conn.createStatement();
  }catch(Exception e){
   logger.error("Connecter=>getConnection error: "+e);
  }
  return stat;
 }
 
 public void close(){
  try{
   if(stat!=null)stat.close();
   stat= null;
  }catch(Exception e){
   logger.error("Connecter=>close statement error: "+e);
  }
  try{
   if(conn!=null)conn.close();
   conn = null;
  }catch(Exception e){
   logger.error("Connecter=>close connection error: "+e);
  }
 }
 
 public ArrayList getTableData(String tableName) {
//  String tableName="t_ad_union_user";
  String sql="select * from "+tableName;  
  HashMap hashMap=null;
  ArrayList result=new ArrayList();
  ResultSet rs;
  try {
   rs = this.getStatement().executeQuery(sql);
   //使用元数据获取一个表字段的总数
   ResultSetMetaData rsmd=rs.getMetaData();
   int coulum=rsmd.getColumnCount();
   while(rs.next()){
    hashMap=new HashMap();
//    String[] array=new String[coulum];
    for(int i=0;i<coulum;i++){
     String columName=rsmd.getColumnName(i+1);
     hashMap.put(columName, rs.getString(i+1));
//     logger.info(columName);
//     array[i]=rs.getString(i+1);
     //在数据库中可以插入日期,int,float,double,varchar
//     int columType=rsmd.getColumnType(i+1);    
//     if(columType==java.sql.Types.INTEGER ){
//      rs.getInt(i+1);
//     }else if(columType==java.sql.Types.BIGINT){
//      rs.getInt(i+1);
//     }else if(columType==java.sql.Types.DATE){
//      rs.getString(i+1);
//     }
//     else{
//      rs.getString(i+1);
//     }
     
    }
//    result.add(array);
    result.add(hashMap);   
   } 
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  return result;
 }
 
 public String[] DataToSql(ArrayList al,String tableName){
//  String tableName="t_ad_union_user";
  String[] result=new String[al.size()];
  String sql="";
  
  for(int i=0;i<al.size();i++){
   String fieldSql="";
   String valueSql="";
   HashMap data=(HashMap)al.get(i);
   Iterator it=data.keySet().iterator();
   while(it.hasNext()){
    String field=it.next().toString();
    String value=data.get(field).toString();
    fieldSql+=field+",";
    valueSql+="'"+value+"',";
//    logger.info(field);
   }
   //去除最后字段的最后一个,符号,去除值的最后两个',符号
   fieldSql=fieldSql.substring(0, fieldSql.length()-1);
   valueSql=valueSql.substring(0, valueSql.length()-1);
   sql="insert into "+tableName+"("+fieldSql+") "+" values("+valueSql+");";
//   logger.info(sql);
//   logger.info(fieldSql);
   result[i]=sql;
  }
  
  return result;  
 }
 
 /**
  * 写入到文件中
  * @param str
  * @param path
  */
 public void stringWriteToTxt(String tableName){
  String path="c:\\"+tableName+".txt";
  String[] content=this.DataToSql(this.getTableData(tableName), tableName);
  BufferedWriter bw=null;
  String str=null;
  try {
   bw=new BufferedWriter(new FileWriter(path));
   for(int i=0;i<content.length;i++){
    str=content[i]+"\n";
    bw.write(str);
   }
   System.out.println("写文件成功!"+path);
  } catch (IOException e) {
   System.out.println("写文件时有错误!"+path);
   e.printStackTrace();
  }finally{
   if(bw!=null){
    try {
     bw.close();
    } catch (IOException e) {
     e.printStackTrace();
    }
   }
  }
 }
 
 public void getTableData1(String tableName) {
//  String tableName="t_ad_union_user";
  String sql="select * from "+tableName; 
  String mysqlSql="select * from "+tableName; 
  ResultSet rs=null;
  ResultSet mysqlRs=null;
  String path="c:\\"+tableName+".txt";
  BufferedWriter bw=null;
  mysqlConn=this.getMysqlConn();
  int count=0;
  
  long oldTime=System.currentTimeMillis();
  try {
//   bw=new BufferedWriter(new FileWriter(path));
   
   rs = this.getStatement().executeQuery(sql);
   //使用元数据获取一个表字段的总数
   ResultSetMetaData rsmd=rs.getMetaData();
   int coulum=rsmd.getColumnCount();
   while(rs.next()){
    String fieldSql="";
    String valueSql="";
    for(int i=0;i<coulum;i++){//获取mssql的字段
     String columName=rsmd.getColumnName(i+1);
     String field=columName;
     String value=rs.getString(i+1);      
     if(value!=null && !value.equalsIgnoreCase("NULL")){
      fieldSql+=field+",";
//      valueSql+="'"+value.replaceAll("\'", "\\\\'")+"',";
      valueSql+="'"+value.replaceAll("\\\\'", "\\\\\\\\'")+"',";
     }
         
    }
    //生成sql语句
    fieldSql=fieldSql.substring(0, fieldSql.length()-1);
    valueSql=valueSql.substring(0, valueSql.length()-1);
    sql="insert into "+tableName+"("+fieldSql+") "+" values("+valueSql+");";
    mysqlStat.executeUpdate(sql);
//    if(mysqlConn.createStatement().executeUpdate(sql)>0){
//     logger.info((count++)+"success");
//    }else{
//     logger.info("false");
//    }
    
    //把sql语句写到文件中    
//    bw.write(sql+"\n");
//    logger.info(sql);
   } 
  } catch (Exception e) {
   logger.error("SQLException有错误!"+sql,e);
   
  } finally{
   try {
    if(mysqlStat!=null) mysqlStat.close();
    if(rs!=null) rs.close();
    if(bw!=null) bw.close();
    if(mysqlConn!=null) mysqlConn.close();
    if(conn!=null) conn.close();    
   } catch (Exception ex) {
    logger.error("关闭conn时出错", ex);
   }    
  }
  long now=System.currentTimeMillis();  
  logger.info("生成完毕,共花费了"+(now-oldTime)/1000+"s时间");
  
 }
 
 
 /**
  * 数据库转移到mysql上,mysqlTableName上的字段必须和msFields的字段一一对应。
  * @param mysqlTableName  目标数据库表
  * @param tableName  源数据库表
  * @param msFields   tableName表中的字段
  */
 public void getTableData2(String mysqlTableName,String tableName,String[] msFields) {
//  String tableName="t_ad_union_user";
  String sql="select * from "+tableName; 
  String mysqlSql="select * from "+mysqlTableName; 
  ResultSet rs=null;
  ResultSet mysqlRs=null;
  String path="c:\\"+mysqlTableName+".txt";
  BufferedWriter bw=null;
  mysqlConn=this.getMysqlConn();
  int count=0;
  
  long oldTime=System.currentTimeMillis();
  try {
//   bw=new BufferedWriter(new FileWriter(path));
   mysqlStat=mysqlConn.createStatement();
   mysqlRs=mysqlStat.executeQuery(mysqlSql);  
   ResultSetMetaData mysqlRsmd=mysqlRs.getMetaData();
//   String mysqlField="";
//   int mysqlColum=mysqlRsmd.getColumnCount();   
//   for(int i=0;i<mysqlColum;i++){//mysql数据库的字段
//    mysqlField+=mysqlRsmd.getColumnName(i+1)+",";
//   }
//   mysqlField=mysqlField.substring(0, mysqlField.length()-1);   
   
   
   rs = this.getStatement().executeQuery(sql);
   //使用元数据获取一个表字段的总数
   ResultSetMetaData rsmd=rs.getMetaData();
   int coulum=rsmd.getColumnCount();
//   logger.info("mysqlColum:"+mysqlColum+":msFields:"+msFields.length);
   while(rs.next()){
    String mysqlField="";
    String valueSql="";
    for(int i=0;i<coulum;i++){//获取mssql的字段
     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(value!=null && !value.equalsIgnoreCase("NULL")){       
        valueSql+="'"+value.replaceAll("\\'", "\\\\'")+"',";//mssql值
        mysqlField+=mysqlRsmd.getColumnName(i+1)+",";//mysql数据库的字段
       }        
      }
     }   
    }
    //生成sql语句    
    valueSql=valueSql.substring(0, valueSql.length()-1);
    mysqlField=mysqlField.substring(0, mysqlField.length()-1); 
    sql="insert into "+mysqlTableName+"("+mysqlField+") "+" values("+valueSql+");";
//    mysqlStat.executeUpdate(sql);
    if(mysqlStat.executeUpdate(sql)>0){
     logger.info((count++)+"success");
    }else{
     logger.info("false");
    }
//    logger.info(mysqlField);
//    logger.info(valueSql);
    //把sql语句写到文件中    
//    bw.write(sql+"\n");
   } 
  } catch (Exception e) {
   logger.error("SQLException有错误!"+sql,e);
   
  } finally{
   try {
    if(mysqlStat!=null) mysqlStat.close();
    if(rs!=null) rs.close();
    if(bw!=null) bw.close();
    if(mysqlConn!=null) mysqlConn.close();
    if(conn!=null) conn.close();    
   } catch (Exception ex) {
    logger.error("关闭conn时出错", ex);
   }    
  }
  long now=System.currentTimeMillis();  
  logger.info("生成完毕,共花费了"+(now-oldTime)/1000+"s时间");
  
 }
 
 public static void main(String[] args){
//  String tableName="LeaveWords";
//  String tableName="SearchPrice";
//  String tableName="t_site_indexed";
//  String tableName="Declaration";
//  String tableName="Bulletin";
//  String tableName="t_login_info";
//  String tableName="ss_ipnetlist";
  
  
  String mysqlTableName="t_ad_union_basicData";
  String msTableName="t_ad_union_basicData";
  String[] msFields={"ID","createDate","statDate","alltype","uid","posid",
    "type","remoteIp","isMobile"};
  
//  String mysqlTableName="t_ad_union_userTotal_final";
//  String msTableName="t_ad_union_userTotal_final";
//  String[] msFields={"ID","createDate","statDate","uid","posId","clickNum",
//    "showNum","clickNumOne","clickNumTwo","ipNum","aa","aa2","price"}; 
  
//  String mysqlTableName="t_ad_union_userTotal";
//  String msTableName="t_ad_union_userTotal";
//  String[] msFields={"ID","createDate","statDate","uid","posId","clickNum",
//    "showNum","clickNumOne","clickNumTwo","ipNum","aa","aa2","price"};   
  
//  String mysqlTableName="t_ad_union_kouliang";
//  String msTableName="t_ad_union_kouliang";
//  String[] msFields={"ID","statDate","assignRatio","deductRatio","incomeTotal","assignRatioInit",
//    "deductRatioInit","incomeTotalInit","ispast","incomeTotalFinal"}; 
  
//  String mysqlTableName="t_ad_union_ip_config";
//  String msTableName="t_ad_union_ip_config";
//  String[] msFields={"ID","userid","minQuery","maxQuery","minValue","maxValue","minTrans",
//    "maxTrans"}; 
  
//  String mysqlTableName="t_ad_union_cpc_config";
//  String msTableName="t_ad_union_cpc_config";
//  String[] msFields={"ID","userid","minCpc","maxCpc","value","beginDate","endDate"};
  
//  String mysqlTableName="t_ad_union_adver_cpc";
//  String msTableName="t_ad_union_adver_cpc";
//  String[] msFields={"ID","statDate","adverName","clickNum"};
  
//  String mysqlTableName="t_ad_union_adTotal_ip";
//  String msTableName="t_ad_union_adTotal_ip";
//  String[] msFields={"ID","createDate","statDate","allType","showNum","clickNum","remoteIp"};
  
//  String mysqlTableName="t_ad_union_adTotal_allType";
//  String msTableName="t_ad_union_adTotal_allType";
//  String[] msFields={"ID","createDate","statDate","allType","showNum","clickNum","remoteIp"};
    
//  String mysqlTableName="t_ad_union_ader_config";
//  String msTableName="t_ad_union_ader_config";
//  String[] msFields={"ID","adName","minCpa","maxCpa","value"};
  
//  String mysqlTableName="t_ad_union_ad_income";
//  String msTableName="t_ad_union_ad_income";
//  String[] msFields={"ID","createDate","statDate","cpa","price","income","username"};  
  
//  String mysqlTableName="t_UnionPayMonthReport";
//  String msTableName="UnionPayMonthReport";
//  String[] msFields={"ID","createDate","statDate","payTime","userid","feeValue","validTotal",
//    "checkStatus","payStatus","remark","confirmStatus"};
  
//  String mysqlTableName="t_Union_UserPayMonth";
//  String msTableName="Union_UserPayMonth";
//  String[] msFields={"ID","createDate","statDate","userid","feeValue","validTotal",
//    "checkStatus","remark","advalue"};  
  
//  String mysqlTableName="t_UnionSiteMonthReport";
//  String msTableName="UnionSiteMonthReport";
//  String[] msFields={"ID","createDate","statDate","sid","feeValue","validTotal"};  
  
//  String mysqlTableName="t_UnionSiteMonthReportDetail";
//  String msTableName="UnionSiteMonthReportDetail";
//  String[] msFields={"ID","validTotal","sid","statDate","searchType","userid","price"}; 
  
//  String mysqlTableName="t_TopSites";
//  String msTableName="t_TopSites";
//  String[] msFields={"ID","easyName","fullName","url","sid","topKey","typeKey","orderNo","showSite"};   
    
//  String mysqlTableName="t_LeaveWords";
//  String msTableName="LeaveWords";
//  String[] msFields={"ID","CreateTime","Content","HasReply","ReplyContent","Email","userid",
//    "ua","url","ip","uid"}; 
  
//  String mysqlTableName="t_SearchPrice";
//  String msTableName="SearchPrice";
//  String[] msFields={"ID","MinDate","MaxDate","MinScale","MaxScale","SearchType","price","sid",
//              "userid","remark"};  
  
//  String mysqlTableName="t_site_indexed";
//  String msTableName="t_site_indexed";
//  String[] msFields={"ID","CreateDate","reviewedDate","domainAddr","email","status","reviewed"};  
  
//  String mysqlTableName="t_Declaration";
//  String msTableName="Declaration";
//  String[] msFields={"id","CreateTime","title","content","dposition","userid"};
  
//  String mysqlTableName="t_login_info";
//  String msTableName="t_login_info";
//  String[] msFields={"id","userid","username","loginDate","ip","loginType"}; 
  
//  String mysqlTableName="t_ipnetlist";
//  String msTableName="ss_ipnetlist";
//  String[] msFields={"ip","ip2","createdt","netname"};  
                
//  String mysqlTableName="t_ss_sqlconfig";
//  String msTableName="ss_sqlconfig";
//  String[] msFields={"ID","keyword","sqlUrl","title","roles","team","isurl"};  
   
//  String mysqlTableName="t_ss_managetree";
//  String msTableName="ss_managetree";
//  String[] msFields={"ID","title","pid","orderId",};
  
//  String mysqlTableName="t_ss_operator";
//  String msTableName="ss_operator";
//  String[] msFields={"ID","UserName","Password","Attribute","remark"};  
    
//  String mysqlTableName="t_unionsite";
//  String msTableName="unionsite";
//  String[] msFields={"SID","CreateTime","UpdateTime","userid","DomainAddr","DomainTitle","BottomLink",
//    "BottomTitle"}; 
  
//  String mysqlTableName="t_unionuser";
//  String msTableName="unionuser";
//  String[] msFields={"UID","CreateTime","UpdateTime","userid","password","teleNo","mobileNo",
//    "IDCard","BankType","BankPlace","BankCardNo","QQ","FullName","Email","LinkFrom",
//    "LastIp","UA","msn","isOpen"}; 
  DataSql ds=new DataSql();
  ds.getTableData2(mysqlTableName,msTableName,msFields);
  
 }
 
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值