java可以反复执行_java之生成可重复执行的sql脚本

packagecom.ebao.th.gs.integration.util;importjava.io.File;importjava.io.FileWriter;importjava.text.SimpleDateFormat;importjava.util.Date;public classGeneraterPKGUtils {public static final String FILE_SPLIT="_";public static voidmain(String[] args) {//调用函数//生成文件}public staticString generaterModifyColType(String column,String tableName,String type){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName+"';\r\n");

pkg.append(" v_sql varchar2(2000):='ALTER TABLE "+tableName+" MODIFY "+column+type+"';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table and t.COLUMN_NAME=v_column;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString generaterRenameColumn(String column,String tableName){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName+"';\r\n");

pkg.append(" v_sql varchar2(2000):='alter table "+tableName.toUpperCase()+" rename column "+column+" to "+column.replaceAll("Insured", "Holder").toUpperCase()+"';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table and t.COLUMN_NAME=v_column ;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString generateCreateTable(String tableStr,String tableName){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_table varchar2(100):='"+tableName+"';\r\n");

pkg.append(" v_sql varchar2(2000):='"+tableStr.trim()+"';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tables t where t.TABLE_NAME=v_table ;\r\n");

pkg.append(" if v_cnt=0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString renameColumn(String column,String tableName,String type){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column.trim()+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName.trim()+"';\r\n");

pkg.append(" v_sql varchar2(2000):='ALTER TABLE "+tableName+" rename column "+column+" to "+type+"';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table and t.COLUMN_NAME=v_column ;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString generatePrimaryKey(String column,String tableName,String type,String constraintName){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column.toUpperCase()+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName.toUpperCase()+"';\r\n");

pkg.append(" v_sql varchar2(2000):='alter table "+tableName.toUpperCase()+" add constraint "+constraintName.toUpperCase()+" primary key ("+column.toUpperCase()+") ';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_constraints t where t.CONSTRAINT_NAME='"+constraintName.toUpperCase()+"' and constraint_type='"+type.toUpperCase()+"' and table_name=v_table ;\r\n");

pkg.append(" if v_cnt=0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString createIndex(String column,String tableName,String type,String indexName){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column.toUpperCase()+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName.toUpperCase()+"';\r\n");

pkg.append(" v_sql varchar2(2000):='create index "+indexName.toUpperCase()+" on "+tableName.toUpperCase()+"("+column.toUpperCase()+")';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_indexes t where t.INDEX_NAME='"+indexName.toUpperCase()+"' and index_type='"+type.toUpperCase()+"' and table_name=v_table ;\r\n");

pkg.append(" if v_cnt=0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString dropColumn(String column,String tableName){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName+"';\r\n");

pkg.append(" v_sql varchar2(2000):='alter table "+tableName+" drop column "+column+"';\r\n");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table and t.COLUMN_NAME=v_column ;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString addComment(String column,String tableName,String comments){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_column varchar2(100):='"+column+"';\r\n");

pkg.append(" v_table varchar2(100):='"+tableName.toUpperCase()+"';\r\n");

pkg.append(" v_sql varchar2(2000):='COMMENT ON COLUMN "+tableName+"."+column+" IS ''"+comments+"'''\r\n;");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table and t.COLUMN_NAME=v_column ;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public staticString addCommentOnTable(String tableName,String comments){

StringBuffer pkg= newStringBuffer();

pkg.append("declare\r\n");

pkg.append(" v_table varchar2(100):='"+tableName.toUpperCase()+"';\r\n");

pkg.append(" v_sql varchar2(2000):='comment on table "+tableName.toUpperCase()+" IS ''"+comments+"'''");

pkg.append(" v_cnt number:=0;\r\n");

pkg.append("begin\r\n");

pkg.append(" select count(1) into v_cnt from user_tab_columns t where t.TABLE_NAME=v_table ;\r\n");

pkg.append(" if v_cnt>0 then\r\n");

pkg.append(" execute immediate v_sql;\r\n");

pkg.append(" end if;\r\n");

pkg.append("end;\r\n");

pkg.append("/\r\n");returnpkg.toString().toUpperCase();

}public static void generateFile(String sql,String name) throwsException{

String path="D:"+File.separator+"dbscript"+File.separator;

File f= newFile(path);if(!f.exists()){

f.mkdirs();

}

FileWriter writer=null;

String dateStr="";

SimpleDateFormat sim= new SimpleDateFormat("yyyyMMddHHmmss");

dateStr= sim.format(newDate());

String fileName= path+dateStr+FILE_SPLIT+name.trim().toUpperCase()+"_ddl.sql";try{

writer= newFileWriter(fileName);

writer.write(sql);

writer.flush();

Runtime.getRuntime().exec("notepad.exe "+fileName);

}catch(Exception e) {//e.printStackTrace();

}finally{

writer.flush();if(writer!=null){

writer.close();

}

}

}

}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值