⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 schedule.java.svn-base

📁 数据库通用适配器:实现行粒度的数据库的转换
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd分 HH:mm:ss  ");
		System.out.println(newtk.getDATE());
		String logerrorname = null;
		String logsqlname = null;
		
		logerrorname = "log.txt";
		logsqlname = "log.txt";
		
		String error = "增量模式导数据失败:\r";
		String sql = "";
		boolean bFile;
		bFile = false;
		File dirFile;
		dirFile = new File("" + root + "/src/Log");
		bFile = dirFile.exists();

		if (bFile == true) {
			 System.out.println("Log文件夹存在。");
		} else {
			System.out.println("Log文件夹不存在" + "\n" +"创建Log文件夹"+ "\n");
			bFile = dirFile.mkdir();
			if (bFile == true) {
				System.out.println("Log文件夹 Createsuccessfully!");
			} else {
				 System.out.println("Disable to make the folder,please check the disk is full or not.");
				System.exit(1);
			}
		}
		
		System.out.println("开始执行创建模式导数据!………………");
		
//      *****************************与源库建立连接,从源库取得数据***************************************
        try {
			Class.forName(newtk.getSDriver());
		} catch (ClassNotFoundException e) {
			error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法完成源数据库驱动!\n";			
			log.Log("" + root + "/src/Log/" + logerrorname, error);
			System.out.println("无法完成源数据库驱动!");
			e.printStackTrace();
		}
        Connection conn = null;
		try {
			System.out.println(newtk.getSURL());
			conn = DriverManager.getConnection(newtk.getSURL(),newtk.getSuser(),newtk.getSpassword());
		} catch (SQLException e) {
			error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法与源数据库建立连接!";
			log.Log("" + root + "/src/Log/" + logerrorname, error);
			System.out.println("无法与源数据库建立连接!");
			e.printStackTrace();
		}
        
        String field = "";
        for(int i = 0; i < newtk.getS().length; i++){
        	field =field +  "," + newtk.getS()[i];
        }
        field = field.substring(1);
        String sschema = null;
        if(newtk.getSSchema() == null){
        	sschema = "";
        }
        else{
        	sschema = newtk.getSSchema();
        }
        String stable = null;
        if(newtk.getSKind().equalsIgnoreCase("excel")){
        	stable = "[Sheet1$]";
        }
        else{
        	stable = newtk.getSTab();
        }
        String query = " select " + field + " from " + sschema + "." + stable;
        System.out.println(query);
        System.out.println(newtk.getSTab());
        PreparedStatement pstm = null;
        ResultSet rs = null;
		try {
			pstm = conn.prepareStatement(query);
			rs = pstm.executeQuery();
		} catch (SQLException e) {
			error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法从源数据库中取得数据!";
			log.Log("" + root + "/src/Log/" + logerrorname, error);
			System.out.println("无法从源数据库中取得数据!");
			e.printStackTrace();
		}
//      *****************************与目的库建立连接,向目的库数据*************************************************
		try {
			Class.forName(newtk.getDDriver());
		} catch (ClassNotFoundException e) {
			error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法完成目的数据库驱动!";
			log.Log("" + root + "/src/Log/" + logerrorname, error);
			System.out.println("无法完成目的数据库驱动!");
			e.printStackTrace();
		} 
		Connection newconn = null;
			try {
				//DriverManager.registerDriver(new oracle.jdbc.OracleDriver()); 
				newconn = DriverManager.getConnection(newtk.getDURL(),newtk.getDuser(),newtk.getDpassword());
			} catch (SQLException e) {
				error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 无法与目的数据库建立连接!";
				log.Log("" + root + "/src/Log/" + logerrorname, error);
				System.out.println("无法与目的数据库建立连接!");
				e.printStackTrace();
			}
			
//      *******************************判断目的表是否已经存在*****************************************************		
			
		Date da = new Date();
		SimpleDateFormat fTime = new SimpleDateFormat("yyyyMM");	
		String nowdate = fTime.format(da);
		String tablename = newtk.getDTab();
		String[] tablenameitems = tablename.split("_");
//		String tableprx = tablename.substring(0,tablename.length()-6);
		String tableprx = tablenameitems[0] + "_";
		tableprx = tableprx.toUpperCase();
		String newtablename = tableprx + nowdate;
		boolean exist = false;
		String isexist = "select * from all_tables where table_name = '" 
			+ newtablename+ "' and owner = '" + newtk.getDSchema() + "'";
		System.out.println(isexist);
		PreparedStatement exst = null;
		ResultSet exstrs = null;
		try {
			exst = newconn.prepareStatement(isexist);
			exstrs = exst.executeQuery();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		int havenum = 0;
		try {
			while(exstrs.next()){
				//if(exstrs.getString(1).equalsIgnoreCase(newtk.getDSchema()))
					havenum++;
			}
		} catch (SQLException e1) {
			e1.printStackTrace();
		}
		if(havenum > 0){
			exist = true;
			sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表已经存在,直接执行导入操作!";
    		log.Log("" + root + "/src/Log/" + logsqlname, sql);
			System.out.println("目的表已经存在,直接执行导入操作!");
		}
		System.out.println(havenum);
//      ****************************目的表不存在,创建目的表,然后导入数据***************************************************		
		if(!exist)
		{	
			sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表不存在,创建目的表!";
		    log.Log("" + root + "/src/Log/" + logsqlname, sql);
		    
			System.out.println("目的表不存在,创建目的表!");
			String create = "create table " + newtk.getDSchema() + "." + newtablename;
			String crtfield = "";
			for (int i = 0; i < newtk.getD().length; i ++){
				
				String type = null;
				if(newtk.getDAttrb()[i].equalsIgnoreCase("number"))
					type = "NUMBER";
				if(newtk.getDAttrb()[i].equalsIgnoreCase("varchar2"))
					type = "VARCHAR2(32)";
				if(newtk.getDAttrb()[i].equalsIgnoreCase("date"))
					type = "DATE";
				if(newtk.getDAttrb()[i].equalsIgnoreCase("float"))
					type = "FLOAT";
				if(newtk.getDAttrb()[i].equalsIgnoreCase("double"))
					type = "REAL";
				if(i == 0){
					crtfield = crtfield + "," + newtk.getD()[i]+ " " + type + " Primary Key ";
				}
				else{
					crtfield = crtfield + "," + newtk.getD()[i]+ " " + type;
				}
				
			}
			crtfield = crtfield.substring(1);
			
			create = create + "( " + crtfield + " )";
			sql = sdf.format(new Date()) + " 方案:  " + newtk.getTaskName()+ create;
    		log.Log("" + root + "/src/Log/" + logsqlname, sql);
			System.out.println(create);
			
			PreparedStatement crtstm = null;
			try {
				crtstm = newconn.prepareStatement(create);
				crtstm.executeUpdate();
				sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 目的表创建成功!";
			    log.Log("" + root + "/src/Log/" + logsqlname, sql);
				System.out.println("目的表创建成功!");
			} catch (SQLException e) {
				error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 创建目的表失败!";
				log.Log("" + root + "/src/Log/" + logerrorname, error);
				System.out.println("创建目的表失败!");
				e.printStackTrace();
			}
		}
		
		 String newfield = "";
	        for(int i = 0; i < newtk.getD().length; i++){
	        	newfield = newfield + "," + newtk.getD()[i];
	        }
	        newfield = newfield.substring(1);
	        String att = "";
	        for(int i = 0;i < newtk.getD().length; i++){
	        	att = att + "," + "?";
	        }
	        att = att.substring(1);
	        String insert = "insert into " + newtk.getDSchema() + "." + newtablename + "(" + newfield + ") values (" + att +")" ;
	        PreparedStatement inpstm = null;

		    System.out.println(insert);
	        int num = 0;
	        
	        try {
				while(rs.next()){
					System.out.println(newtk.getD()[0]);
					int keyword = rs.getInt(newtk.getD()[0]);
					String existitem = "select " + newtk.getD()[0] + " from " + newtk.getDSchema() + "." + newtablename +
	                   " where " + newtk.getD()[0] + " = " + keyword;
					
					System.out.println(existitem);
					System.out.println( keyword);
					PreparedStatement existitemps = newconn.prepareStatement(existitem);
					ResultSet existitemrs = existitemps.executeQuery();
 
					boolean isexistitem = existitemrs.next();
					System.out.println(newtk.getD()[0]);
					System.out.println( keyword);
					if(!isexistitem){
//						sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 不存在 " + newtk.getD()[0] + " = " + keyword +" 插入!";
//					    log.Log("" + root + "/src/Log/" + logsqlname, sql);
//						System.out.println("不存在 " + newtk.getD()[0] + " = " + keyword +" 插入!");
						
						inpstm = newconn.prepareStatement(insert);
						inpstm.setInt(1,keyword);
						int attnum = 2;
						for(int i = 1; i < newtk.getS().length; i++){
			        		if(newtk.getDAttrb()[i].equalsIgnoreCase("number"))
			        			inpstm.setInt(attnum,rs.getInt(newtk.getS()[i]));
			        		if(newtk.getDAttrb()[i].equalsIgnoreCase("varchar2"))
			        			inpstm.setString(attnum,rs.getString(newtk.getS()[i]));
			        		if(newtk.getDAttrb()[i].equalsIgnoreCase("Date"))
			        			inpstm.setDate(attnum,rs.getDate(newtk.getS()[i]));
			        		if(newtk.getDAttrb()[i].equalsIgnoreCase("float"))
			        			inpstm.setFloat(attnum,rs.getFloat(newtk.getS()[i]));
			        		if(newtk.getDAttrb()[i].equalsIgnoreCase("double"))
			        			inpstm.setDouble(attnum,rs.getDouble(newtk.getS()[i]));
			        		
			        		attnum++;
			        	}			
	
												num += inpstm.executeUpdate();
						inpstm.close();
					}
					else{
//						sql = sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 存在 " + newtk.getD()[0] + " = " + keyword;
//					    log.Log("" + root + "/src/Log/" + logsqlname, sql);
//						System.out.println("存在 " + newtk.getD()[0] + " = " + keyword);
					}
				
					existitemrs.close();
					existitemps.close();
				}
			} catch (SQLException e) {
				error += sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 向目的库数据库中导入数据失败!";
				log.Log("" + root + "/src/Log/" + logerrorname, error);
				System.out.println("向目的库数据库中导入数据失败!");
				e.printStackTrace();
				
			}
			
	        try {
				newconn.close();	
				if(num > 0)
					inpstm.close();
				newconn.close();
				
				rs.close();
				pstm.close();
		        conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			sql = sdf.format(new Date()) + insert;
		    log.Log("" + root + "/src/Log/" + logsqlname, sql);
			
			sql = "\n" + sdf.format(new Date()) + " 方案:" + newtk.getTaskName()+ " 更新模式导数据结果:" + "导入了  " + num + " 项数据!\n" ;
			log.Log("" + root + "/src/Log/" + logsqlname, sql);
	        System.out.println("导入了  " + num + " 项数据!");
			System.out.println("创建模式导数据执行完毕!");
		
	}

	public void run() {
			System.out.println("t["+ id + "] is running. Now time "+
					new Date(System.currentTimeMillis()));
			if(newtk.getImportWay().equals("更新"))
				this.renewal();
			else if(newtk.getImportWay().equals("添加"))
				this.increment();
			else if(newtk.getImportWay().equals("创建"))
				this.establish();

//			*****************************周期运行线程,启动下一次任务****************************************		
			starttime = new Date(System.currentTimeMillis());
			Calendar c = new GregorianCalendar();
		    c.setTime(starttime);
		    switch(this.period){
			    case YEAR:
			    	c.add(Calendar.YEAR, 1);
			    	break;
			    case MONTH:
			    	c.add(Calendar.MONTH, 1);
			    	break;
			    case WEEK:
			    	c.add(Calendar.DATE, 7);
			    	break;
			    case DAY:
			    	c.add(Calendar.DATE, 1);
			    	break;
			    case HOUR:
			    	c.add(Calendar.HOUR, 1);
			    	break;
			    case MINUTE:
			    	c.add(Calendar.MINUTE, 1);
			    	break;
		    }
		    long delay = c.getTimeInMillis() - starttime.getTime();
		    System.out.println("开始执行线程的下一周期!");
		    Schedule.scheduler.schedule(new MyThread(this.period,newtk), delay, TimeUnit.MILLISECONDS);
		    
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -