java 。sql脚本分割,excel生成sql脚本,excel分割

自己给自己写的工作工具类哈哈

sql脚本分割

超过2M的脚本分割为多个接近2M的脚本,并且自动生成回退脚本。

package script;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;

public class CutSql {

	public static void main(String[] args) throws IOException {
		SimpleDateFormat sdfa = new SimpleDateFormat( "yyyyMMdd" );
		String date=sdfa.format(new Date());
		File origin=new File("F:\\mc数据\\t_password.sql");
		try {
			FileInputStream fis = new FileInputStream(origin);
			BufferedReader bh = new BufferedReader(new InputStreamReader(fis));
			String sql = bh.readLine();
			int sqlLength = sql.length();//代码长度,用来判断字节数
			int i=1;
			int num=1;
			FileWriter out=new FileWriter("F:\\mc数据\\ngucauth\\生产-auth-"+date+"-38-"+ num +"-insert-sql.txt");
			FileWriter ROLLBACK=new FileWriter("F:\\mc数据\\auth\\生产-auth-"+date+"-38-"+ num +"-insert-ROLLBACK-sql.txt");
			CutSql.getTop(out,"25","auth","insert");
			CutSql.getTop(ROLLBACK,"25","auth","delete");
			while (sql!= null) {
				sql=sql+'\n';
				out.write(sql);
				String sqlRollback= getROLLBACK(sql);
				ROLLBACK.write(sqlRollback);
				sql = bh.readLine();
				System.out.println(i+"条数据--");
				i++;
				if (sqlLength*i>1900*1024*num){//2m字节数
					num++;
					out.close();
					ROLLBACK.close();
					out=new FileWriter("F:\\mc数据\\auth\\生产-auth-"+date+"-38-"+ num +"-insert-sql.txt");
					ROLLBACK=new FileWriter("F:\\mc数据\\auth\\生产-auth-"+date+"-38-"+ num +"-insert-ROLLBACK-sql.txt");
					CutSql.getTop(out,"25","auth","insert");
					CutSql.getTop(ROLLBACK,"25","auth","delete");
				}
			}
			out.close();
			ROLLBACK.close();
			bh.close();
		} catch (Exception e) {
			System.out.println("错误");
		}
	}
	public static void getTop(FileWriter fw,String ip,String table,String type){
		try {
			fw.write("/*\n");
			fw.write(" *地    址: 192.168.168."+ip+":20000\n");
			fw.write(" *库    名: "+table+"\n");
			fw.write(" *操作类型: "+type+"\n");
			fw.write(" *执行时间: 00:00\n");
			fw.write("*/\n");
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	public static String getROLLBACK(String sql) {
		Integer begin = sql.indexOf("VALUES ('");
		String sqlROLLBACK="";
		if(begin>0) {
			String sqlR = sql.substring(begin+9);
			Integer end = sqlR.indexOf("',");
			sqlROLLBACK = sql.substring(begin+9,begin+9+end);
		}
		String sqlString = "DELETE FROM `t_password` WHERE DBL_CEN_ID='"+sqlROLLBACK+"';\n";
		return sqlString;
	}
}

excel生成sql脚本

package update;

import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * sheet转脚本并分割
 */
public class UpdateSet {

    public static FileWriter backupSet,rollbackSet,updateSet;
    static FileWriter del;
    static String yyyyMMdd,table,ngg;

    public static void main(String[] args) {
        InputStream inp;
        try {
            inp = new FileInputStream("F:\\脚本分割\\UpdateSet模板.xlsx");
            Workbook wb =WorkbookFactory.create(inp);
            Sheet sheet = wb.getSheetAt(0);

            SimpleDateFormat sdfa = new SimpleDateFormat( "yyyyMMdd" );
            yyyyMMdd=sdfa.format(new Date());
            table = "t_ucp_orgainfo";
            ngg = "ngguser";

            backupSet = new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-1-1-update-BACKUP-sql.txt");
            rollbackSet =new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-1-1-update-ROLLBACK-sql.txt");
            updateSet =new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-1-1-update-sql.txt");

            CreateUpdate.topWrite(backupSet);
            CreateUpdate.topWriteRemark(backupSet,"27",ngg,"insert");
            CreateUpdate.topWrite(rollbackSet);
            CreateUpdate.topWriteRemark(rollbackSet,"27",ngg,"update");
            CreateUpdate.topWrite(updateSet);
            CreateUpdate.topWriteRemark(updateSet,"27",ngg,"update");

            int num = 1;
            for(int i=1;i<sheet.getLastRowNum()+1;i++){
                Row row = sheet.getRow(i);
                if (24*i>190*1024*num){
                    num++;
                    backupSet.close();
                    rollbackSet.close();
                    updateSet.close();
                    backupSet = new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-"+ num +"-1-update-BACKUP-sql.txt");
                    rollbackSet =new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-"+ num +"-1-update-ROLLBACK-sql.txt");
                    updateSet =new FileWriter("F:\\脚本分割\\数据处理\\生产-"+ngg+"-"+yyyyMMdd+"-"+ num +"-1-update-sql.txt");

                    CreateUpdate.topWrite(backupSet);
                    CreateUpdate.topWriteRemark(backupSet,"27",ngg,"insert");
                    CreateUpdate.topWrite(rollbackSet);
                    CreateUpdate.topWriteRemark(rollbackSet,"27",ngg,"update");
                    CreateUpdate.topWrite(updateSet);
                    CreateUpdate.topWriteRemark(updateSet,"27",ngg,"update");
                }

                backupSet.write(CreateUpdate.backup(row, yyyyMMdd,table));
                rollbackSet.write(CreateUpdate.rollback(row, yyyyMMdd,table));
                updateSet.write(CreateUpdate.updateSet(row, yyyyMMdd,table));
                System.out.println("row"+i+"  succeed");

            }
            //operateSheet(sheet);

            backupSet.close();
            rollbackSet.close();
            updateSet.close();

        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            
        }
    }
    
}
package update;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;


public class CreateUpdate {

    public static Map<String,Integer> address;

    public void setLocation(String name,int id){
        address.put(name, id);
    }

    public static void topWrite(FileWriter fw){
        if(address==null){
            address=new HashMap<String, Integer>();

            address.put("DBL_CEN_ID", 0);
            address.put("ORGACODE", 1);
            address.put("SUPERORGACODE", 2);
            address.put("ORGACODE2", 3);
            address.put("SUPERORGACODE2", 4);

        }
    }

    public static void topWriteRemark(FileWriter fw,String ip,String ngg,String type){
        try {
            fw.write("/*\n");
            fw.write(" *地    址: 192.168.168."+ip+":20000\n");
            fw.write(" *库    名: "+ngg+"\n");
            fw.write(" *操作类型: "+type+"\n");
            fw.write(" *执行时间: 00:00\n");
            fw.write("*/\n");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    /*去掉字符串为空格的值*/
    public static String removeNull(Row row,int id){
        Cell cell=row.getCell(id);

        if(cell==null){
            return "";
        }

        if(CellType.NUMERIC.equals(cell.getCellTypeEnum())){
            Double d=cell.getNumericCellValue();
            return new DecimalFormat("#").format(d);
        }
        return cell.toString().replaceAll("\\s", "");
    }

    public static void sortCol(Sheet sheet){
        int rowNum=sheet.getLastRowNum()+1;
    }

    public static void topWriteEnd(FileWriter fw) {
        try {
            fw.write("commit;\n");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static String backup(Row row ,String yyyyMMdd,String table) {
        String sqlString=null;
        String DBL_CEN_ID=removeNull(row,address.get("DBL_CEN_ID"));
        sqlString = "INSERT INTO zxdba_bak.zxdba_"+yyyyMMdd+"_"+table+"_part SELECT * FROM "+table+" where DBL_CEN_ID='" + DBL_CEN_ID + "';\n";
        return sqlString;
    }
    public static String rollback(Row row ,String yyyyMMdd,String table) {
        String sqlString=null;
        String DBL_CEN_ID=removeNull(row,address.get("DBL_CEN_ID"));
        String ORGACODE=removeNull(row,address.get("ORGACODE"));
        String SUPERORGACODE=removeNull(row,address.get("SUPERORGACODE"));
        String set;
        if(SUPERORGACODE == null || SUPERORGACODE == "") {
            set= " set ORGACODE='"+ORGACODE+"'";
        } else {
            set = " set ORGACODE='"+ORGACODE+"' , SUPERORGACODE='"+SUPERORGACODE;
        }
        sqlString = "UPDATE "+table+set+"' WHERE DBL_CEN_ID='" + DBL_CEN_ID + "';\n";
        return sqlString;
    }

    public static String updateSet(Row row ,String yyyyMMdd,String table) {
        String sqlString=null;
        String DBL_CEN_ID=removeNull(row,address.get("DBL_CEN_ID"));
        String ORGACODE2=removeNull(row,address.get("ORGACODE2"));
        String SUPERORGACODE2=removeNull(row,address.get("SUPERORGACODE2"));
        String set;
        if(SUPERORGACODE2 == null || SUPERORGACODE2 == "") {
            set = " set ORGACODE='"+ORGACODE2+"'";
        } else {
            set = " set ORGACODE='"+ORGACODE2+"' , SUPERORGACODE='"+SUPERORGACODE2;
        }
        sqlString = "UPDATE "+table+set+"' WHERE DBL_CEN_ID='" + DBL_CEN_ID + "';\n";
        return sqlString;
    }
}

 excel分割

package script;

import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * sheet分割
 */
public class CutExcel {

    public static Sheet sheet,sheeto;
    public static FileWriter orgaInfo,delInfo;
    public static Workbook wb,wbo;

    public static void main(String[] args) {

        InputStream inp;
        FileOutputStream oup;
        try {
            SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
            String nowTime = df.format(new Date());
            inp = new FileInputStream("F:\\脚本分割\\prsnBusiRelationTemplet0.xlsx");
            oup = new FileOutputStream(new File("F:\\脚本分割\\prsnBusiRelationTemplet1.xlsx"));

            wbo = new XSSFWorkbook();
            sheeto = wbo.createSheet();

            wb = WorkbookFactory.create(inp);
            sheet = wb.getSheetAt(0);
            Row row0 = sheeto.createRow(0);
            row0.createCell(0);
            row0.getCell(0).setCellValue("人员(必填)");
            row0.createCell(1);
            row0.getCell(1).setCellValue("业务(必填)");
            row0.createCell(2);
            row0.getCell(2).setCellValue("绑定类别(0:绑定,1:解绑)(必填)");

            int num = 1;
            for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
                Map<String, String> rootMap = new HashMap<String, String>();

                Row row = sheet.getRow(i);
                String n0 = removeNull(row, 0);
                String n1 = removeNull(row, 1);
                String n2 = removeNull(row, 2);

                Row rowo = sheeto.createRow(i-140*(num-1));
                rowo.createCell(0);
                rowo.getCell(0).setCellValue(n0);
                rowo.createCell(1);
                rowo.getCell(1).setCellValue(n1);
                rowo.createCell(2);
                rowo.getCell(2).setCellValue(n2);
                System.out.println(i+"    "+(i-140*(num-1)));
                if(i>=140*num) {
                    wbo.write(oup);
                    oup.flush();
                    wbo.close();

                    wbo = new XSSFWorkbook();
                    sheeto = wbo.createSheet();
                    num++;
                    oup = new FileOutputStream(new File("F:\\脚本分割\\prsnBusiRelationTemplet"+num+".xlsx"));
                    Row rowc = sheeto.createRow(0);
                    rowc.createCell(0);
                    rowc.getCell(0).setCellValue("人员(必填)");
                    rowc.createCell(1);
                    rowc.getCell(1).setCellValue("业务(必填)");
                    rowc.createCell(2);
                    rowc.getCell(2).setCellValue("绑定(0:绑定,1:解绑)(必填)");
                }
            }
            wbo.write(oup);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
    /*去掉字符串为空格的值*/
    public static String removeNull(Row row,int id){
        Cell cell=row.getCell(id);

        if(cell==null){
            return "";
        }

        if(CellType.NUMERIC.equals(cell.getCellTypeEnum())){
            Double d=cell.getNumericCellValue();
            return new DecimalFormat("#").format(d);
        }
        return cell.toString().replaceAll("\\s", "");
    }
}

具体代码在自己的github上,私有。哈哈哈

写给自己的。要能有收获,您就nb

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值