java初始化資料庫讀取sql設定檔建表

來源:互聯網
上載者:User

標籤:

在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;
     }

java初始化資料庫讀取sql設定檔建表

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.