使用java连接数据库按需生成oracle卸数装数的control、selectSQL、建表ddl语句等文件

本文介绍如何使用Java连接Oracle数据库,按需生成控制文件、SELECT SQL和DDL语句。通过数据库连接工具类、对象bean和main方法读取配置,实现自动化处理,避免手动编写大量SQL。
摘要由CSDN通过智能技术生成

使用java连接数据库按需生成oracle卸数装数的control、selectSQL、建表ddl语句等文件
写这个主要是当时有需要从另外一个oracle数据库环境卸一部分的表的数据到另外一个oracle数据库进行装数,因为懒得一个个的写control文件,没办法

简单的具体思路

一、首先创建数据库连接工具类

package cn.com.wjq.connect;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;


public class DBConnectionUtil {
   

	private static String driver;
	
	private static String username;
	
	private static String pwd;
	
	private static String url;
	
	
	static {
   
		try {
   
			ClassLoader classLoader = DBConnectionUtil.class.getClassLoader();
			
			InputStream resourceAsStream = classLoader.getResourceAsStream("config/props/db.properties");
			
			Properties properties=new Properties();
			
			properties.load(resourceAsStream);
			
			url = properties.getProperty("url");
			
			username = properties.getProperty("user");
			
			pwd = properties.getProperty("password");
			
			driver = properties.getProperty("driver");
			
			Class.forName(driver);
		}catch (IOException e) {
   

			e.printStackTrace();
		} catch (ClassNotFoundException e) {
   

			e.printStackTrace();
		}
	}
	
	public static Connection getConnection() throws SQLException {
   
		Connection conn = (Connection) DriverManager.getConnection(url, username, pwd);
		if (conn == null) {
   
			System.out.println("Failed to connect database...");
		} else {
   
			System.out.println("database connected successful...");
		}
		return conn;
	}
	
	
	public static void release(ResultSet rs, PreparedStatement sta, Connection conn) {
   

		if (rs != null) {
   
			try {
   
				rs.close();
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		if (sta != null) {
   
			try {
   
				sta.close();
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		if (conn != null) {
   
			try {
   
				conn.close();
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		System.out.println("Resource release successful...");
	}

	public static void release(PreparedStatement sta, Connection conn) {
   
		if (sta != null) {
   
			try {
   
				sta.close();
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		if (conn != null) {
   
			try {
   
				conn.close();
			} catch (SQLException e) {
   
				e.printStackTrace();
			}
		}
		System.out.println("Resource release successful...");
	}
	
}

二、创建对象bean类

类一

package cn.com.wjq.bean;

public class DBA_TAB_COLS {
   
	//OWNER,TABLE_NAME,COLUMN_NAME,DATA_TYPE,DATA_LENGTH,COLUMN_ID
	public String OWNER										;
	public String TABLE_NAME               ;
	public String COLUMN_NAME              ;
	public String DATA_TYPE                ;
	public String DATA_LENGTH              ;
	public String COLUMN_ID                ;
	public String Comment					;
	public String DATA_PRECISION           ;
	public String DATA_SCALE      ;
	public String getDATA_PRECISION() {
   
		return DATA_PRECISION;
	}
	public void setDATA_PRECISION(String dATA_PRECISION) {
   
		DATA_PRECISION = dATA_PRECISION;
	}
	public String getDATA_SCALE() {
   
		return DATA_SCALE;
	}
	public void setDATA_SCALE(String dATA_SCALE) {
   
		DATA_SCALE = dATA_SCALE;
	}
	         
	public String getComment() {
   
		return Comment;
	}
	public void setComment(String comment) {
   
		Comment = comment;
	}
	public String getOWNER() {
   
		return OWNER;
	}
	public void setOWNER(String oWNER) {
   
		OWNER = oWNER;
	}
	public String getTABLE_NAME() {
   
		return TABLE_NAME;
	}
	public void setTABLE_NAME(String tABLE_NAME) {
   
		TABLE_NAME = tABLE_NAME;
	}
	public String getCOLUMN_NAME() {
   
		return COLUMN_NAME;
	}
	public void setCOLUMN_NAME(String cOLUMN_NAME) {
   
		COLUMN_NAME = cOLUMN_NAME;
	}
	public String getDATA_TYPE() {
   
		return DATA_TYPE;
	}
	public void setDATA_TYPE(String dATA_TYPE) {
   
		DATA_TYPE = dATA_TYPE;
	}
	public String getDATA_LENGTH() {
   
		return DATA_LENGTH;
	}
	public void setDATA_LENGTH(String dATA_LENGTH) {
   
		DATA_LENGTH = dATA_LENGTH;
	}
	public String getCOLUMN_ID() {
   
		return COLUMN_ID;
	}
	public void setCOLUMN_ID(String cOLUMN_ID) {
   
		COLUMN_ID = cOLUMN_ID;
	}

	
}

类二

package cn.com.wjq.bean;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;




public class TableClass {
   

	private String table_name;
	private String comment;
	private String owner;
	private String charset;
	private Set<String> primaryKey;
	private Set<String> uniqueKey;
	private List<DBA_TAB_COLS> columns = new ArrayList<>();
	public String getTable_name() {
   
		return table_name;
	}
	public void setTable_name(String table_name) {
   
		this.table_name = table_name;
	}
	public String getComment() {
   
		return comment;
	}
	public void setComment(String comment) {
   
		this.comment = comment;
	}
	public String getowner() {
   
		return owner;
	}
	public void setowner(String owner) 
一、简介 1.1前言 1、由于最近工作一直用Oracle,故对Oracle数据库研究为对象。 2、根据工作业务求实际情况进行功能研发。为什么要开发呢?因为在数据库升级或者迁移的时候,为了保证不同环境不同数据库数据保持同步,故数据库SQL脚本非常作用。比如:数据库主脚本,副脚本,增量脚本。 3、 什么是主脚本、副脚本、增量脚本呢? 3.1、主脚本指数据库表或存储过程,视图脚本,序列等脚本。 3.2、副脚本指必须执行主脚本之后才执行的脚本。换句话说在没执行主键脚本的情况下,副脚本执行之后会回滚事务失败。 3.3、增量脚本指在执行主脚本或副脚本之后,根据求对某个表添加/修改约束(主外键约束,长度约束等),添加/修改字段/添加数据等情况对数据库结构改变处理的一种行为脚本。 1.2作用 1、 快速产出自定义规则要的SQL脚本。 2、减少人工编写SQL脚本出错率问题,完全通过程序检测SQL准确性。 3、帮助开发人员提高SQL编写效率,减少人工编写SQL开发成本问题。 4、帮助开发人员节约时间,同时避免繁琐不必要编写SQL的工作。 二、实现方式与原理 2.1实现方式 1、实现方式分:正向与逆向实现。什么是正向与逆行呢【是否有鸡还是有蛋,先后道理同等】 2、正向方式:首先把设计好数据库表文档,把所有表的字段属性配置到EXCEL或者CSV格式的文件通过JXL/POI技术去读取文件的字段,再通过其他技术一系列程序处理之后生成要的SQL脚本。 3、逆向方式:首先有数据库表,然后通过ORM持久化技术连接数据库再读取表的字段等属性出来,再通过其他技术一系列程序处理之后生成要的SQL脚本。 2.2原理 对数据库软件内置核心表或视图查询出来存储用户行为表结构所有属性信息,对此属性结构信息进行分析与组装所SQL脚本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值