`

java类实现导出各种数据库insert语句

    博客分类:
  • Java
阅读更多
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
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.sql.Types;
import java.util.ArrayList;
import java.util.List;

public class Test {
	private static Connection conn=null;
	private static Statement sm = null;
	private static String schema="FJSTL";//模式名
	private static String select="SELECT * FROM";//查询sql
	private static String insert="INSERT INTO";//插入sql
	private static String values="VALUES";//values关键字
	private static String []table={"T_USER"};//table数组
	private static List<String> insertList=new ArrayList<String>();//全局存放insertsql文件的数据
	private static String filePath="E://insertSQL.txt";//绝对路径 导出数据的文件
	/**
	 * 导出数据库表
	 * @param args
	 * @throws SQLException 
	 */
	public static void main(String[] args) throws SQLException {
		List<String> listSQL=new ArrayList<String>();
		connectSQL("oracle.jdbc.driver.OracleDriver", "xxx.xxx.xxx", "xxx", "xxx");//连接数据库
		listSQL=createSQL();//创建查询语句
		executeSQL(conn,sm,listSQL);//执行sql并拼装
		createFile();//创建文件
	}
	/**
	 * 创建insertsql.txt并导出数据
	 */
	private static void createFile() {
		File file=new File(filePath);
		if(!file.exists()){
			try {
				file.createNewFile();
			} catch (IOException e) {
				System.out.println("创建文件名失败!!");
				e.printStackTrace();
			}
		}
		FileWriter fw=null;
		BufferedWriter bw=null;
		try {
			fw = new FileWriter(file);
			bw = new BufferedWriter(fw);
			if(insertList.size()>0){
				for(int i=0;i<insertList.size();i++){
					bw.append(insertList.get(i));
					bw.append("\n");
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally{
			try {
				bw.close();
				fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
	/**
	 * 拼装查询语句
	 * @return 返回select集合
	 */
	private static List<String> createSQL() {
		List<String> listSQL=new ArrayList<String>();
		for(int i=0;i<table.length;i++){
			StringBuffer sb=new StringBuffer();
			sb.append(select).append(" ").append(schema).append(".").append(table[i]);
			listSQL.add(sb.toString());
		}
		return listSQL;
	}
	/**
	 * 连接数据库 创建statement对象
	 * @param driver
	 * @param url
	 * @param UserName
	 * @param Password
	 */
	public static void connectSQL(String driver,String url,String UserName,String Password){
		try{
			Class.forName(driver).newInstance();
			conn = DriverManager.getConnection(url, UserName, Password);
			sm=conn.createStatement();
		}catch(Exception e){
			e.printStackTrace();
		}
	}
	/**
	 * 执行sql并返回插入sql
	 * @param conn
	 * @param sm
	 * @param listSQL
	 * @throws SQLException
	 */
	public static void executeSQL(Connection conn,Statement sm,List listSQL) throws SQLException{
		List<String> insertSQL=new ArrayList<String>();
		ResultSet rs=null;
		try {
			rs = getColumnNameAndColumeValue(sm, listSQL, rs);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			 rs.close();   
			 sm.close();   
			 conn.close();
		}
	}
	/**
	 * 获取列名和列值
	 * @param sm
	 * @param listSQL
	 * @param rs
	 * @return
	 * @throws SQLException
	 */
	private static ResultSet getColumnNameAndColumeValue(Statement sm,
			List listSQL, ResultSet rs) throws SQLException {
		if(listSQL.size()>0){
			for(int j=0;j<listSQL.size();j++){
				String sql=String.valueOf(listSQL.get(j));
				rs=sm.executeQuery(sql);
				ResultSetMetaData rsmd = rs.getMetaData();   
			    int columnCount = rsmd.getColumnCount();  
				while(rs.next()){
					StringBuffer ColumnName=new StringBuffer();
					StringBuffer ColumnValue=new StringBuffer();
					for(int i=1;i<=columnCount;i++){
						String value=rs.getString(i).trim();
						if("".equals(value)){
							value=" ";
						}
						if(i==1||i==columnCount){
							ColumnName.append(rsmd.getColumnName(i));
							if(Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
									|| Types.LONGVARCHAR == rsmd.getColumnType(i)){
								ColumnValue.append("'").append(value).append("',");
							}else if(Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
									|| Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
									|| Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
									|| Types.DECIMAL == rsmd.getColumnType(i)){
								ColumnValue.append(value).append(",");
							}else if(Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
									|| Types.TIMESTAMP == rsmd.getColumnType(i)){
								ColumnValue.append("timestamp'").append(value).append("',");
							}else{
								ColumnValue.append(value).append(",");
							}
						}else{
							ColumnName.append(","+rsmd.getColumnName(i));
							if(Types.CHAR == rsmd.getColumnType(i) || Types.VARCHAR == rsmd.getColumnType(i)
									|| Types.LONGVARCHAR == rsmd.getColumnType(i)){
								ColumnValue.append("'").append(value).append("'").append(",");
							}else if(Types.SMALLINT == rsmd.getColumnType(i) || Types.INTEGER == rsmd.getColumnType(i)
									|| Types.BIGINT == rsmd.getColumnType(i) || Types.FLOAT == rsmd.getColumnType(i)
									|| Types.DOUBLE == rsmd.getColumnType(i) || Types.NUMERIC == rsmd.getColumnType(i)
									|| Types.DECIMAL == rsmd.getColumnType(i)){
								ColumnValue.append(value).append(",");
							}else if(Types.DATE == rsmd.getColumnType(i) || Types.TIME == rsmd.getColumnType(i)
									|| Types.TIMESTAMP == rsmd.getColumnType(i)){
								ColumnValue.append("timestamp'").append(value).append("',");
							}else{
								ColumnValue.append(value).append(",");
							}
						}
				    }
					System.out.println(ColumnName.toString());
					System.out.println(ColumnValue.toString());
					insertSQL(ColumnName, ColumnValue);
				}
			}
		}
		return rs;
	}
	/**
	 * 拼装insertsql 放到全局list里面
	 * @param ColumnName
	 * @param ColumnValue
	 */
	private static void insertSQL(StringBuffer ColumnName,
			StringBuffer ColumnValue) {
		for(int i=0;i<table.length;i++){
			StringBuffer insertSQL=new StringBuffer();
			insertSQL.append(insert).append(" ").append(schema).append(".")
			.append(table[i]).append("(").append(ColumnName.toString())
			.append(")").append(values).append("(").append(ColumnValue.toString()).append(");");
			insertList.add(insertSQL.toString());
			System.out.println(insertSQL.toString());
		}
	}
}
分享到:
评论

相关推荐

    java类实现导出各种数据库insert语句.pdf

    java类实现导出各种数据库insert语句.pdf

    把任意数据库导出为其它数据库的insert(可执行程序+java代码)

    此软件用于把数据库里的数据导出为指定数据库类型的insert语句,用于数据备份或迁移到另一个数据库, 大文本和二进制字段被忽略。 当前支持oracle、sybase、mysql和ms sqlServer数据库。 你可以修改参数文件、增加新...

    JavaGUI工具:导出Oralce数据库脚本

    使用Java导出Oralce数据库脚本(Insert语句),也支持MS SqlServer

    将数据库表数据生产Insert语句

    通过存储过程将表数据生产对应的Insert语句

    根据表名及字段,自动生成insert,update,select语句

    首先在数据库中创建存储过程和方法,然后调用创建好的存储过程,生成带有与表名及字段相关的insert,update,delete语句,变量与表字段名相同,例如: "insert into temp (col1,col2,col3) values ('"+col1+"','"+col2...

    Java数据库导出程序2.0版

    可以快速将SQL2000数据库里的所有数据导出为INSERT的SQL语句。由于Oracle有这个功能所以为添加。附全部程序源码,MYECLIPSE5.5版本运行cn.sist.database.swing.MainView

    sybase库中导出全部表的oracle、mysql和sybase的建表语句

    sybase库中导出全部表的oracle、mysql和sybase格式的建表语句

    Java数据库迁移备份软件源代码.rar

    Java数据库迁移备份软件源代码,作者 : 杨浚用于把数据库里的数据导出为insert语句,用于数据备份或迁移到另一个数据库,支持oracle、sybase、mysql和ms sqlServer数据库,大文本和二进制字段被忽略,开发者可以修改...

    Java数据库编程宝典3

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.5 数据查询语言 3.5.1 SELECT语句 3.5.2 WHERE子句 3.5.3 SQL运算符 3.5.4 使用子查询 3.6 对查询结果排序 3.7 将查询结果进行汇总 3.7.1 集合...

    简单易用、跨数据库平台的数据库管理工具

    1、模仿sqlserver的查询分析器,简单易用 2、跨数据库应用,基于ODBC连接,任何数据库只要配置好ODBC即可识别,注册...7、可根据查询结果生成insert语句 8、支持多表查询关联语句生成导航,轻松获得多表查询的sql语句

    Java数据库备份迁移程序的源代码

    Java完成的程序可以把数据库里的数据导出为其它数据库的insert语句,用于数据备份或迁移到另一个数据库,注意,在数据转换过程中,文本和二进制字段将被忽略,程序支持oracle、sybase、mysql和ms sqlServer数据库。...

    Java数据库编程宝典2

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.5 数据查询语言 3.5.1 SELECT语句 3.5.2 WHERE子句 3.5.3 SQL运算符 3.5.4 使用子查询 3.6 对查询结果排序 3.7 将查询结果进行汇总 3.7.1 集合...

    Java数据库编程宝典1

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.5 数据查询语言 3.5.1 SELECT语句 3.5.2 WHERE子句 3.5.3 SQL运算符 3.5.4 使用子查询 3.6 对查询结果排序 3.7 将查询结果进行汇总 3.7.1 集合...

    Java数据库编程宝典4

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.5 数据查询语言 3.5.1 SELECT语句 3.5.2 WHERE子句 3.5.3 SQL运算符 3.5.4 使用子查询 3.6 对查询结果排序 3.7 将查询结果进行汇总 3.7.1 集合...

    用SELECT... INTO OUTFILE语句导出MySQL数据的教程

    主要介绍了用SELECT... INTO OUTFILE语句导出MySQL数据的教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下

    Oracle11g从入门到精通

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期类函数 ...

    .net源码生成工具DataBase2Sharp

    可以生成各种架构代码,导出数据库文档、浏览数据库架构、查询数据、生成Sql脚本等。 主要的功能如下:  1、Castle的ActiveRecord代码生成功能,准确生成各种关系。  2、NHibernate代码生成,生成相应的实体类和...

    sqlinsert:eclipse sql-insert插件的回购

    介绍该Eclipse插件旨在允许您从SQL查询中将结果集导出为一组SQL Insert语句。 这对于创建数据库脚本以将数据复制到新数据库很有用。 基本标准功能在标准的Eclipse中不可用,希望很快会添加。用法在SQL Sheet中,执行...

    Oracle11g从入门到精通2

    3.4.1 INSERT语句 3.4.2 UPDATE语句 3.4.3 DELETE语句 3.4.4 TRLINCATE语句 3.5 数据控制 3.5.1 GRANT语句 3.5.2 REVOKE语句 3.6 Oracle常用函数 3.6.1 字符类函数 3.6.2 数字类函数 3.6.3 日期...

Global site tag (gtag.js) - Google Analytics