/**
* 执行初始化SQL脚本
* @param configDir
* @return
*/
private boolean initSql(String configDir){
log.info("load the init sql ... ");
File file = new File(FilenameUtils.concat(configDir, sql_file));
String sqlStr = StringUtils.EMPTY;
boolean ret = true;
if(file.exists()){
try {
FileChannel fc = new FileInputStream(file).getChannel();
ByteBuffer bb = ByteBuffer.allocate(1024*1024);//1M的大小
byte [] bytes = ArrayUtils.EMPTY_BYTE_ARRAY;
synchronized (file) {
while( fc.read(bb)!=-1){
bb.flip();
bytes = ArrayUtils.addAll(bytes, bb.array());
bb.clear();
}
fc.close();
sqlStr = new String(bytes,"utf-8");
/**要转义**/
sqlStr = sqlStr.replaceAll("/\\u002A.*\\u002A/", StringUtils.EMPTY);/**去掉**注释*/
sqlStr = sqlStr.replaceAll("--.*(\\r\\n|\\n)*", StringUtils.EMPTY);/**去掉--注释*///Pattern.compile("--.*(\\r\\n|\\n)*").matcher(sqlStr).replaceAll("");
for(String sql : sqlStr.split(";")){
if(!StringUtils.isBlank(sql.trim())){
sqlStrList.add(sql.trim());/**过滤掉前后的空格**/
log.debug("load sql : {}",sql);
}
}
}
} catch (FileNotFoundException e) {
ret = false;
log.error("can not find the sql init file at {}.",file.getAbsolutePath());
} catch (IOException e) {
ret = false;
log.error("load the sql init file occur a exception. ",e);
}
}else{
ret = false;
log.error("can not find the sql init file at {}",file.getAbsolutePath());
}
return ret;
}