`
canofy
  • 浏览: 829787 次
  • 性别: Icon_minigender_1
  • 来自: 北京、四川
社区版块
存档分类
最新评论

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

阅读更多
从一个数据库导入到另一个数据库中
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);
		
	}
	
}

  • dao.zip (4.1 KB)
  • 下载次数: 82
分享到:
评论
2 楼 何处烤地瓜 2012-04-10  
说几个建议把,你这个只是对varchar类型的做导入,对DATA 类型等等都没有做很好的转换,    还有对于取插入时的字段不需要每次循环去取,只要在循环外面取一次即可
1 楼 何处烤地瓜 2012-04-08  
有考虑  clob字段吗

相关推荐

    Access数据导入助手(从一个数据库导入到另一个数据库)

    这时,"Access数据导入助手"这款工具就显得尤为重要,它能够帮助用户快速且方便地将一个ACCESS数据库中的数据导入到另一个数据库中,极大地提高了工作效率。 Access数据导入助手的核心功能在于其直观易用的操作界面...

    Windows服务器下的Oracle数据库导入到Linux服务器下的Oracle数据库中。

    数据库导入是指将数据从一个数据库导入到另一个数据库中。这里,我们使用 imp 命令将导出的数据导入到 Linux 服务器下的 Oracle 数据库中。 六、表空间管理 表空间是 Oracle 数据库中用于存储数据的逻辑存储单元。...

    sql server从一个数据库复制表到另一个数据库的方法

    在SQL Server中,将表从一个数据库复制到另一个数据库的过程涉及到数据库对象的迁移,这通常通过创建表的结构脚本和数据迁移来实现。以下是一个详细的步骤指南: 1. **启动SQL Server Management Studio (SSMS)**: ...

    java代码操作数据转移,把一个数据库里的东西移动到另一个数据库,自动建库建表

    在IT行业中,数据库迁移是一项常见的任务,特别是在Java开发中,我们经常需要将数据从一个数据库迁移到另一个数据库,比如从测试环境迁移到生产环境。这个过程不仅涉及数据的复制,还包括了数据库结构(如表、索引等...

    sql server 数据库导入导出方法

    SQL Server 数据库导入导出是数据库管理员和开发者常用的操作,目的是将数据库备份到本地或网络存储设备中,以便在需要时恢复数据库或将数据库迁移到其他服务器上。下面将详细介绍 SQL Server 数据库导入导出的方法...

    access数据库导入到sql数据库中

    总结,将Access数据库导入到SQL Server数据库,通过ADOQuery控件,可以实现快速且灵活的数据迁移。这个过程涉及到数据库连接、SQL命令编写、错误处理以及可能的性能优化,是数据库管理员和开发者必备的技能之一。...

    MYSQL 数据库导入导出命令

    MySQL 数据库导入导出命令是数据库管理员和开发者经常使用的命令,用于将 MySQL 数据库导出到文件中,以便备份、还原或迁移到其他服务器。下面将详细介绍 MySQL 数据库导入导出的命令和方法。 数据库备份 数据库...

    Oracle数据库导入导出工具

    - 数据迁移:当需要将数据从一个Oracle实例迁移到另一个实例时,导入导出工具是关键。 - 数据备份:定期备份数据库以防止数据丢失,确保业务连续性。 - 数据恢复:在系统故障或数据错误时,通过备份数据进行恢复...

    DELPHI 从EXCEL导入到数据库

    标题中的"DELPHI 从EXCEL导入到数据库"是一个关于使用Delphi编程语言将Excel电子表格中的数据导入到数据库的应用实例。这个话题涉及到多个IT领域的知识点,包括Delphi编程、Excel文件处理以及数据库交互。 Delphi是...

    把mysql数据库中的数据导入到oracle数据库中

    - 当前MySQL数据库的备份文件为`.sql`文件,每个表一个文件,需要将这些文件的数据导入到Oracle数据库中。 #### 二、MySQL数据恢复 为了确保数据的完整性和准确性,首先需要将MySQL的备份文件恢复到一个测试数据库...

    谈谈数据从sql server数据库导入mysql数据库的体验

    谈谈数据从sql server数据库导入mysql数据库的体验

    DB2数据库导入导出

    例如,以下命令将导出当前数据库的表结构到一个名为 dbfile.sql 的文件中: Db2look -d mydb -e UTF-8 -a -x -i myuser -w mypassword -o dbfile.sql 二、导出表数据 在 DB2 命令行工具中,使用 Db2move 命令来...

    SQL Server三种导入导出数据方式比较

    这种方式使用 SQL 语句来将数据从一个数据库导入到另一个数据库中。这种方式非常灵活,支持多种类型的数据库,可以在不同的 SQL Server 数据库之间进行数据导入导出。 使用 Transact-SQL 时,可以使用 SELECT INTO ...

    如何将数据库中的表导入到PowerDesigner中

    导入数据库表的功能允许我们将现有的数据库结构快速转化为PowerDesigner的数据模型,方便我们进行后续的调整和优化。 要将数据库中的表导入到PowerDesigner,我们需要遵循以下步骤: 1. **启动PowerDesigner**:...

    从Excel中读取数据导入到数据库中

    总的来说,从Excel中读取数据并导入到数据库是一个涉及数据预处理、类型转换、错误处理等多个环节的过程。正确处理合并单元格和长文本问题,能确保数据导入的准确性和效率,从而更好地支持后续的数据分析和应用。

    ERwin反向导入工程(从数据库把表导入ERwin)

    ERwin 反向导入工程是指从数据库中将表导入到 ERwin 中的过程,在这个过程中,我们可以将数据库中的表结构导入到 ERwin 中,以便进行数据分析和设计。下面是 ERwin 反向导入工程的详细步骤: 1. 打开 ERwin 并新建...

    Oracle数据库导入到SqlServer步骤(图文篇)

    本文将详细介绍如何将 Oracle 数据库导入到 SqlServer 中。 Step 1-6: 数据源设置 首先,在要导入的数据库上右键,点击“任务”-“导入数据”。然后,在“导入导出向导”中点击“下一步”。接着,选择数据源为...

    将Excel文件导入到数据库中或将数据库中文件导出Excel中

    首先,将Excel文件导入数据库通常涉及到以下几个步骤: 1. 数据预处理:在Excel中整理数据,确保格式正确,无错误或缺失值。可能需要创建或调整数据表,以便与数据库表格结构匹配。 2. 选择导入方式:常见的数据库...

    access数据库MDB数据文件导入oracle数据库操作步骤.pdf

    在 PL/SQL 工具中,选择 ODBC 导入器工具,该工具可以用来将数据从其他数据库导入到 Oracle 数据库中。选择 ODBC 导入器后,弹出对话框,要求输入 Access 数据库的用户名和密码。由于 Access 数据库不需要用户名和...

Global site tag (gtag.js) - Google Analytics