package com.audaque.web.action;
/**
* @Auther:
* @Date: 2021/4/19 16:19
* @Description:
*/
public class sqlCreate {
public static void main(String[] args) {
String sql="DROP TABLE IF EXISTS `security_org_department`;\n" +
"CREATE TABLE `security_org_department` (\n" +
" `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',\n" +
" `create_user` int(11) DEFAULT NULL COMMENT '创建人',\n" +
" `create_time` datetime DEFAULT NULL COMMENT '创建时间',\n" +
" `update_user` int(11) DEFAULT NULL COMMENT '修改人',\n" +
" `update_time` datetime DEFAULT NULL COMMENT '修改时间',\n" +
" `delete_user` int(11) DEFAULT NULL COMMENT '删除人',\n" +
" `delete_time` datetime DEFAULT NULL COMMENT '删除时间',\n" +
" `data_version` int(11) DEFAULT NULL COMMENT '数据版本',\n" +
" `data_state` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '数据的逻辑状态(1:有效,非1:无效)',\n" +
" `tenant_id` int(11) DEFAULT NULL COMMENT '租户id',\n" +
" `name` varchar(20) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '部门名称',\n" +
" `pid` int(11) DEFAULT NULL COMMENT '父id',\n" +
" `dept_type` int(11) DEFAULT NULL COMMENT '部门类型,1:实体组织,2:区划,3:虚拟组织,4:部门/团队',\n" +
" `dept_code` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '编码',\n" +
" `industry_category` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '行业分类',\n" +
" `credit_code` varchar(50) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '统一社会信用代码',\n" +
" `dept_level` int(11) DEFAULT NULL COMMENT '级别(根节点算做1级)',\n" +
" `custom_order` int(11) DEFAULT NULL COMMENT '自定义顺序',\n" +
" `remark` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '备注',\n" +
" `id_path` varchar(190) COLLATE utf8mb4_bin DEFAULT NULL COMMENT 'id的路径,用于树结构检索,不包含自己,举例:/1/2/3/',\n" +
" `name_path` varchar(190) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '名称的路径,包含自己,结尾不包含分隔符',\n" +
" `inside_id` int(11) DEFAULT NULL COMMENT '内部id,用于区分不同租户下的同一部门',\n" +
" `children_num` int(11) DEFAULT NULL COMMENT '当前部门的子部门数量',\n" +
" `current_user_num` int(11) DEFAULT NULL COMMENT '当前部门的用户数',\n" +
" `recursion_user_num` int(11) DEFAULT NULL COMMENT '递归所有子部门的用户数,包含当前部门',\n" +
" `recursion_distinct_user_num` int(11) DEFAULT NULL COMMENT '递归所有子部门去重后的用户数,包含当前部门',\n" +
" `level1` int(11) DEFAULT NULL COMMENT '一级部门的id',\n" +
" `level2` int(11) DEFAULT NULL COMMENT '二级部门的id',\n" +
" `level3` int(11) DEFAULT NULL COMMENT '三级部门的id',\n" +
" `level4` int(11) DEFAULT NULL COMMENT '四级部门的id',\n" +
" `level5` int(11) DEFAULT NULL COMMENT '五级部门的id',\n" +
" `level6` int(11) DEFAULT NULL COMMENT '六级部门的id',\n" +
" `level7` int(11) DEFAULT NULL COMMENT '七级部门的id',\n" +
" `level8` int(11) DEFAULT NULL COMMENT '八级部门的id',\n" +
" `level9` int(11) DEFAULT NULL COMMENT '九级部门的id',\n" +
" `level10` int(11) DEFAULT NULL COMMENT '十级部门的id',\n" +
" PRIMARY KEY (`id`),\n" +
" UNIQUE KEY `security_org_department_1` (`pid`,`name`,`data_state`,`tenant_id`),\n" +
" KEY `security_org_department_2` (`id_path`),\n" +
" KEY `security_org_department_3` (`level1`),\n" +
" KEY `security_org_department_4` (`level2`),\n" +
" KEY `security_org_department_5` (`level3`),\n" +
" KEY `security_org_department_6` (`level4`),\n" +
" KEY `security_org_department_7` (`level5`),\n" +
" KEY `security_org_department_8` (`level6`),\n" +
" KEY `security_org_department_9` (`level7`),\n" +
" KEY `security_org_department_10` (`level8`),\n" +
" KEY `security_org_department_11` (`level9`),\n" +
" KEY `security_org_department_12` (`level10`)\n" +
") ENGINE=InnoDB AUTO_INCREMENT=10017 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT='组织结构的部门';\n" +
"\n" ;
String [] sqls=sql.split("\n");
boolean isStart=false;
boolean isEnd=false;
String newSql=null;
String tableName=null;
String colName=null;
String rebark="";
int lenth=0;
for (String s:sqls){
if (s.startsWith("DROP TABLE ")){
newSql="";
rebark="";
isEnd=false;
isStart=false;
// System.out.println(s);
}else if(s.startsWith("CREATE TABLE ")){
isStart=true;
lenth=s.split("CREATE TABLE ")[1].length();
tableName=s.split("CREATE TABLE ")[1].substring(0,lenth-2).replaceAll("`","");
// System.out.println(tableName);
newSql=s.replaceAll("`","");
}else{
if (isStart){
if (s.startsWith(" PRIMARY KEY ")||s.startsWith(" UNIQUE KEY ")||s.startsWith(" KEY ")){
continue;
}
s=s.replaceAll("int\\(11\\)","decimal(11)").replaceAll("bigint\\(20\\)","decimal(11)").replaceAll("tinyint\\(4\\)","decimal(11)").replaceAll("tinyint\\(1\\)","decimal(11)").replaceAll("timestamp\\(3\\)","timestamp").replaceAll("datetime","timestamp").replaceAll("`","").replaceAll("NOT NULL","").replaceAll("DEFAULT NULL","");
if (s.indexOf("AUTO_INCREMENT")>0){
s=s.replaceAll("AUTO_INCREMENT","identity(1,1) primary key");
}
if (s.indexOf("COMMENT")>0&&s.indexOf("ENGINE=InnoDB")<1){
lenth=s.split("COMMENT")[1].length();
rebark=rebark+"COMMENT on column "+tableName+"."+s.split("\\s+")[1]+ " is "+s.split("COMMENT")[1].substring(0,lenth-1)+";"+"\n";;
s=s.split("COMMENT")[0]+",";
}
if (s.indexOf("ENGINE=InnoDB")>0){
if (s.indexOf("COMMENT")>0){
lenth= s.split("COMMENT")[1].length();
rebark=rebark+"COMMENT on table "+tableName+" is"+ s.split("COMMENT=")[1].substring(0,lenth-1);
}
isEnd=true;
lenth=newSql.length();
newSql=newSql.substring(0,lenth-2);
newSql=newSql+");";
System.out.println(newSql);
System.out.println(rebark);
}else{
newSql=newSql+s+"\n";
}
}
}
}
}
}
将mysql的脚本语句转oracle,达梦sql
最新推荐文章于 2025-04-27 08:36:22 发布