标签:
在src/main/resources下sql文件夹建立一个init.sql文件,放入建表语句:
    CREATE TABLE {DB}.`AGENT_STATUS` ( 
      `DEVICE_NUM` varchar(100) NOT NULL,
      `START_TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE           CURRENT_TIMESTAMP,
      `STATUS` int(11) NOT NULL,
      `DURATION` int(11) DEFAULT NULL,
      `END_TIME` timestamp NULL DEFAULT NULL,
      `CALL_TYPE` int(11) DEFAULT NULL,
      `SESSION_ID` varchar(255) DEFAULT NULL,
      `SOURCE` varchar(255) DEFAULT NULL,
      `CUSTOM_NUM` varchar(100) DEFAULT NULL,
      `MEDIA_TYPE` int(11) DEFAULT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
 
    CREATE TABLE {DB}.`ASSOCIATE_DATA` ( 
      `SESSIONID` varchar(255) NOT NULL,
      `DEVICE_NUM` varchar(255) DEFAULT NULL,
      `AGENT_NAME` varchar(255) DEFAULT NULL,
      `SKILL_GROUP_ID` int(11) DEFAULT NULL,
      `SKILL_GROUP_NAME` varchar(255) DEFAULT NULL,
      `TIME` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
      `SOURCE` varchar(255) DEFAULT NULL,
      `CALL_TYPE` int(11) DEFAULT NULL,
      `AGENT_ID` varchar(36) DEFAULT NULL, 
      PRIMARY KEY (`SESSIONID`) 
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CHECKSUM=1 DELAY_KEY_WRITE=1 ROW_FORMAT=DYNAMIC;
读取.sql工具类ReportFormSqlUtil,代码如下:
package com.channelsoft.col.colweb.util;
import java.io.InputStream; import java.util.ArrayList; import java.util.List;
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
public class ReportFormSqlUtil {
private static Logger log = LoggerFactory.getLogger(ConfigUtil.class);
public static List<String> loadSql()throws Exception {
InputStream sqlFileIn = null; List<String> sqlList = new ArrayList<String>();
try {
sqlFileIn = ReportFormSqlUtil.class.getResourceAsStream("/sql/reportform.sql"); //配置文件路径
StringBuffer sqlSb = new StringBuffer();
byte[] buff = new byte[1024];
int byteRead = 0;
while ((byteRead = sqlFileIn.read(buff)) != -1) {
sqlSb.append(new String(buff, 0, byteRead,"utf-8"));
}
sqlFileIn.close();
// Windows 下换行是 \r\n, Linux 下是 \n
String[] sqlArr = sqlSb.toString().split("(;\\s*\\r\\n)|(;\\s*\\n)");
for (int i = 0; i < sqlArr.length; i++) {
String sql = sqlArr[i].replaceAll("--.*", "").trim();
if (!sql.equals("")) { sqlList.add(sql); }
}
return sqlList;
} catch (Exception ex) {
log.error("读取报表sql建表文件[reportform.sql]失败.", ex);
throw new Exception(ex.getMessage());
}
}
}
初始化数据库建表:
  //给用户建立报表数据库
     List<String> listsql = ReportFormSqlUtil.loadSql();//读取.sql建表语句
     String crsql = "CREATE DATABASE col_user_"+ user.getId() + " DEFAULT CHARACTER SET utf8";//建库语句
     try {
      //建库
      jdbcTemplate.update(crsql);
      for(int i = 0;i < listsql.size();i++){
       //建表语句
       String sqll = listsql.get(i).replaceFirst("\\{DB\\}","col_user_"+user.getId());
       System.out.println(sqll);
       jdbcTemplate.update(sqll);
      }
     } catch (Exception e) {
      logger.error("初始化用户报表数据库错误", e);
      throw e;
     }
标签:
原文地址:http://www.cnblogs.com/yaodq/p/4818743.html