java regex 字符_【Java.Regex】用正则表达式查找Java文件里的字符串

packagecom.hy.insert.multithread;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.text.SimpleDateFormat;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.Date;importjava.util.List;importorg.apache.log4j.Logger;importcom.hy.DBParam;/*** 删单表线程

*@author逆火

*

* 2019年11月17日 上午9:24:39*/

public class InsertThread extendsThread{private static Logger log = Logger.getLogger(InsertThread.class);private final int BatchSize=250;//一次性插入记录数

private int tableIndex;//表序号

private String tableName;//tablename

private int count;//record count will be inserted

private String[] innerArr;//array contains field type and names

private InsertManager manager;//reference to InsertManager

/*** Constructor

*@paramtableIndex

*@paramtableName

*@paramcount

*@paraminnerArr

*@parammng*/

public InsertThread(int tableIndex,String tableName,intcount,String[] innerArr,InsertManager mng) {this.tableIndex=tableIndex;this.tableName=tableName;this.count=count;this.innerArr=innerArr;this.manager=mng;

}/*** Run body here*/

public voidrun() {

Connection conn= null;

Statement stmt= null;try{long startTime =System.currentTimeMillis();

Class.forName(DBParam.Driver).newInstance();

conn=DriverManager.getConnection(DBParam.DbUrl, DBParam.User, DBParam.Pswd);

stmt=conn.createStatement();

log.info("Begin to access "+DBParam.DbUrl+" as "+DBParam.User+"...");

truncateTable(tableName,conn,stmt);

insertDataToTable(tableIndex,tableName,count,innerArr,conn,stmt);if(isAllInserted(count,tableName,stmt)) {long endTime =System.currentTimeMillis();

String timeElasped=sec2DHMS(startTime,endTime);

log.info("#"+tableIndex+" "+count+" records were inserted to table:'" + tableName + "' used " +timeElasped );

manager.reportFinished(String.valueOf(tableIndex), tableName, timeElasped);

}

}catch(Exception e) {

System.out.print(e.getMessage());

}finally{try{

stmt.close();

conn.close();

}catch(SQLException e) {

log.error("Can't close stmt/conn because of " +e.getMessage());

}

}

}/*** judge if all records are inserted

*@paramcount

*@paramtable

*@paramstmt

*@return*@throwsSQLException*/

private boolean isAllInserted(int count,String table,Statement stmt) throwsSQLException {

String sql="SELECT COUNT (*) as cnt FROM "+table;

ResultSet rs=stmt.executeQuery(sql);while(rs.next()) {int cnt = rs.getInt("cnt");return cnt==count;

}return false;

}/*** get datetime n seconds before

*@paramn

*@paraminterval

*@return

*/

private static String getDatetimeBefore(int n,intinterval) {try{

Calendar now=Calendar.getInstance();

now.add(Calendar.SECOND,-n*interval);//鏃ユ湡鍑忓幓n*10绉�

Date newDate=now.getTime();

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String retval=sdf.format(newDate);returnretval;

}catch(Exception ex) {

ex.printStackTrace();return null;

}

}/*** delete all data in a table quickly

*@paramtableName

*@paramconn

*@paramstmt

*@throwsSQLException*/

private void truncateTable(String tableName,Connection conn,Statement stmt) throwsSQLException{

String sql="truncate table "+tableName;

stmt.execute(sql);

log.info("truncated table:"+tableName);

}/*** Insert date to a table

*@paramtbSN

*@paramtableName

*@paramcount

*@paraminnerArr

*@paramconn

*@paramstmt

*@throwsSQLException*/

private void insertDataToTable(int tbSN,String tableName,int count,String[] innerArr,Connection conn,Statement stmt) throwsSQLException{//寰楀埌瀛楁鍚嶅拰瀛楁绫诲瀷

List typefields=new ArrayList();for(int i=1;i

String temp=innerArr[i];

String[] arrTmp=temp.split(":");

TypeField tf=newTypeField();

tf.type=arrTmp[0];

tf.field=arrTmp[1];

typefields.add(tf);

}

List fields=new ArrayList();

List values=new ArrayList();int index=0;for(TypeField tf:typefields) {

fields.add(tf.field);

values.add("''{"+index+"}''");

index++;

}int interval=2*365*24*60*60/count;//涓ゅ勾鐨勭鏁伴櫎浠ユ�讳釜鏁板嵆涓洪棿闅�

index=0;int times=count/BatchSize;for(int i=0;i

StringBuilder sb=newStringBuilder();

sb.append("INSERT ALL ");for(int j=0;j

index=i*BatchSize+j;

sb.append(getInsertSql(tableName,typefields,index,interval));

}

sb.append(" select * from dual");

String sql=sb.toString();//long startTime = System.currentTimeMillis();

stmt.executeUpdate(sql);//long endTime = System.currentTimeMillis();//log.info("#"+tbSN+"-"+i+" "+BatchSize+" records inserted to '"+tableName+"' used " + sec2DHMS(startTime,endTime));

}

}/*** get insert sql

*@paramtableName

*@paramtypefields

*@paramindex

*@return

*/

private String getInsertSql(String tableName,List typefields,int index,intinterval) {

String currTime=getDatetimeBefore(index,interval);

StringBuilder sb=newStringBuilder();

sb.append(" INTO "+tableName+"(");

List fields=new ArrayList();for(TypeField tf:typefields) {

fields.add(tf.field);

}

sb.append(String.join(",",fields));

sb.append(") values(");

List values=new ArrayList();for(TypeField tf:typefields) {if(tf.type.equals("PK")) {//values.add("'"+String.valueOf(index)+"'");

if(tableName.contains("DELIVERY_INFO_HISTORY")) {

values.add("'0'");

}else{

values.add("'"+String.valueOf(index)+"'");

}

}else if(tf.type.equals("CH")) {

values.add("'0'");

}else if(tf.type.equals("US")) {

values.add("'BatcherUser'");

}else if(tf.type.equals("DT")) {

values.add("to_date('"+currTime+"','yyyy-MM-dd HH24:mi:ss')");

}

}

sb.append(String.join(",",values));

sb.append(")");

String insertSql=sb.toString();returninsertSql;

}/*** change seconds to DayHourMinuteSecond format

*@paramstratMs

*@paramendMs

*@return

*/

private static String sec2DHMS(long stratMs,longendMs) {

String retval= null;long secondCount=(endMs-stratMs)/1000;long days = secondCount / (60 * 60 * 24);long hours = (secondCount % (60 * 60 * 24)) / (60 * 60);long minutes = (secondCount % (60 * 60)) / 60;long seconds = secondCount % 60;if (days > 0) {

retval= days + "d" + hours + "h" + minutes + "m" + seconds + "s";

}else if (hours > 0) {

retval= hours + "h" + minutes + "m" + seconds + "s";

}else if (minutes > 0) {

retval= minutes + "m" + seconds + "s";

}else{

retval= seconds + "s"";

}returnretval;

}/*** Inner class,used for inner data structure

*@author逆火

*

* 2019年11月17日 上午9:27:47*/

protected static final classTypeField{

String type;

String field;

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值