`
cguang87
  • 浏览: 1723 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 倒表数据

    博客分类:
  • java
阅读更多

前段时间闲着,写了写倒表的程序。本来想写个带界面的,不过java GUI真的不咋会,用web写的界面也不咋地,

就没界面了,工程里面只是最基本的功能,从Oracle倒到MySql我测试过没问题。

下面把最基本的类贴出来:

/**
	 * 倒数据,把数据从一个数据表导入另一个数据表
	 * @param conn 源数据库链接
	 * @param conn2 目的数据库链接
	 * @param tablename1 源数据库表
	 * @param tablename2 目的数据库表
	 */
	@SuppressWarnings("unchecked")
	public static void dataTranslates(Connection conn,Connection conn2,
							String tablename1,String tablename2) throws Exception {
			Statement stmt = DataConnect.getStmt(conn);
			/**
				取得当前连接数据库指定表的字段信息。
				tableName 表名称 map结构-- 
				key--表名 
				value--列名:列类型
			*/
			Map<String, String[]> frommap = getFieldList(conn,tablename1);
			//字段名:字段类型
			String[] str = null; 
			for(String key : frommap.keySet()){     
				str = frommap.get(key);     
			}   
			String[] fcolumn = new String[str.length];
			String[] fcolumntype = new String[str.length];
			for(int i = 0; i < str.length; i++) {
				fcolumn[i] = str[i].split(":")[0];
				//getType:得到int对应的Types类型
				String type = GetTypes.getType(Integer.parseInt(str[i].split(":")[1]));
				fcolumntype[i] = type.equals("Int")?"Integer":type;
			}
			//得到数据结果集
			ResultSet rs = stmt.executeQuery(spliceFromSql(fcolumn,tablename1));
			//拼接insert
			String isql = spliceToSql(fcolumn,tablename2);
			PreparedStatement pstmt = DataConnect.getPStme(conn2, isql);
			Class clazz = rs.getClass();
			Class clazz2 = pstmt.getClass();
			String[] mothods = getMethodName(fcolumntype);
			//gets方法用于取值
			Method[] gets = new Method[mothods.length];
			//sets方法用于设值
			Method[] sets = new Method[mothods.length];
			for(int i = 0; i < mothods.length; i++) {
				gets[i] = clazz.getDeclaredMethod(mothods[i].split(":")[0],
						int.class);
				if(fcolumntype[i].equals("Integer")) {
					sets[i] = clazz2.getDeclaredMethod(mothods[i].split(":")[1],
							int.class,int.class);
				} else {
					sets[i] = clazz2.getDeclaredMethod(mothods[i].split(":")[1],
							int.class,
							Class.forName("java.lang."+fcolumntype[i]));
				}
			}
			int count = 0;
			while(rs.next()) {
				//循环调用PreparedStatement的设值和ResultSet的取值方法
				for(int i = 0; i < gets.length; i++) {
					if(fcolumntype[i].equals("Integer")) {
						sets[i].invoke(pstmt, i + 1, Integer.parseInt((gets[i].invoke(rs, i+1)==null?"0":gets[i].invoke(rs, i+1)).toString()));
					} else {
						sets[i].invoke(pstmt, i + 1, (gets[i].invoke(rs, i+1)==null?"":gets[i].invoke(rs, i+1)).toString());
					}
				}
				count++;
				pstmt.addBatch();
				if(count%200==0) {
					pstmt.executeBatch();
					System.out.println("导入" + count + "条数据");
				}
			}
			//数据提交
			pstmt.executeBatch();
	}
gets[i] = clazz.getDeclaredMethod(mothods[i].split(":")[0],
						int.class);//按索引取值
oracle.jdbc.driver.OracleResultSetImpl中好像没有实现java.sql.ResultSet中的
String getString(String columnLabel)方法,所以只能按索引取值,不能按字段名取值。

 

分享到:
评论

相关推荐

    java倒计时数据

    java数据 java倒计时数据 运用

    java数据结构单链表的倒置

    数据结构中java版。。。对于单链表的倒置。。。

    java POI完整示例,POI将word转HTML,数据库倒出数据到Excel等

    java POI完整示例,POI将word转HTML,数据库倒出数据到Excel等

    JAVA上百实例源码以及开源项目源代码

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP ...

    倒排实现数据透视

    实现一下效果转换:统计多个表数据到一张表中 源数据: meta3:[you, love, me, in, this, day] meta2:[i, love, you] meta1:[i, live, in, hangzhou] 目标数据 love:[meta3, meta2] in:[meta3, meta1] hangzhou:...

    java源码包---java 源码 大量 实例

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP ...

    C#、java 字符流跨平台数据解压缩

    由于项目需求,需要在C#中压缩,然后在java里解压缩,或者倒过来,在Java里压缩,C#里解压缩,以下代码经测试验证通过。 关键技术点和体会: 压缩的结果采用Base64编码,方便在Java端或者C#端打印出来调试,也方便...

    java中Excel与mysql数据互倒

    java中Excel与mysql数据互倒,将数据库名称以及excel格式更改就可以用,很容易理解,也可以集成到项目中

    Java源码包100个设计实例.zip

    Java 组播组中发送和接受数据实例 Java 飞机订票.rar Java 高考信息管理系统 SQL数据库.rar Java (Jsp)制作简单的表单程序.rar Java+ajax写的登录实例.rar JAVA+JSP的聊天室.rar Java+MsSQL超市进销存(毕业设计及...

    java源码包4

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,...

    java源码包3

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,...

    JAVA上百实例源码以及开源项目

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,HTTP ...

    java源码包2

     [MonthMaker.java] 月份表算法类  [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接与浏览,Java源码下载 1个目标文件 摘要:Java源码,网络相关,...

    java-excel-mysql互倒

    这里有使用java操作excel,将excel中规则的数据导入到mysql中的jar,以及将MySQL中的数据导出到excel的jar

    人工智能-项目实践-搜索引擎-java实验1-实现搜索引擎的倒排索引数据结构

    java实验1-实现搜索引擎的倒排索引数据结构 实验1知识点: 集合类的使用如ArrayList,HashMap ◦对这些集合类的操作包括:遍历、添加、排序,得到集合的大小、判断集合里是否已存在指定元素 第三是熟悉对象的序列...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    日历表格面板 [ConfigLine.java] 控制条类 [RoundBox.java] 限定选择控件 [MonthMaker.java] 月份表算法类 [Pallet.java] 调色板,统一配色类 Java扫雷源码 Java生成自定义控件源代码 2个目标文件 Java实现HTTP连接...

    java-excel-mysql互倒代码

    此代码是MySQL和excel的互相导入,导出使用jxl.jar和poi jar

    java 在线考试系统源码(含数据库脚本).rar

    3,系统提供考试时间倒计时功能,使考生实时了解考试剩余时间。 随机抽取试题。 4,实现自动提交试卷的功能。当考试时间达到规定时间时,如果考生还未提交试卷,系统将自动交卷,以保证考试严肃、公正地进行。 5,...

    数据分析java

    把七天的数据倒进一个文件夹,求出所有用户浏览网页的平均兴趣度,把它作为一个阈值,筛选兴趣度高于这个阈值的用户群

Global site tag (gtag.js) - Google Analytics