Kaynağa Gözat

初始化租户基础库

韩帛霖 1 yıl önce
ebeveyn
işleme
7c1d19534f

+ 59 - 21
zkqy-datamodeling/src/main/java/com/zkqy/datamodeling/service/impl/TableInfoServiceImpl.java

@@ -6,6 +6,10 @@ import com.ruoyi.common.constant.LoadDriverConstants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.DataSource;
 
+import java.io.BufferedReader;
+import java.io.FileReader;
+import java.io.Reader;
+import java.nio.charset.StandardCharsets;
 import java.sql.*;
 import javax.sql.rowset.JdbcRowSet;
 
@@ -15,6 +19,7 @@ import com.zkqy.datamodeling.domain.TableInfo;
 import com.zkqy.datamodeling.domain.vo.TableInfoVO;
 import com.zkqy.datamodeling.mapper.TableInfoMapper;
 import com.zkqy.datamodeling.service.ITableInfoService;
+import org.apache.ibatis.io.Resources;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -656,6 +661,8 @@ public class TableInfoServiceImpl implements ITableInfoService {
                 foundationUserPwd += infoMap.get("password");
                 foundationSQL += "SHOW TABLES;";
                 foundationENDSQL += "SHOW CREATE TABLE `" + infoMap.get("databaseName") + "`.`tableName`";
+
+
                 break;
             case "sqlserver":
                 driverName = LoadDriverConstants.SQLSERVER;
@@ -711,33 +718,64 @@ public class TableInfoServiceImpl implements ITableInfoService {
             Class.forName(foundationDriverName);
             Connection foundationCon = DriverManager.getConnection(foundationDBURL, foundationUserName, foundationUserPwd);
             Statement foundationSt = foundationCon.createStatement();
-            //查询当前库中的所有表信息
-            ResultSet foundationRs = foundationSt.executeQuery(foundationSQL);
-
-            List<String> tableNameList = new ArrayList<>();
-            // 封装数据,执行创建表操作
-            while (foundationRs.next()) {
-                // 得到结果集->表名称
-                tableNameList.add(foundationRs.getString(1));
-            }
-            // 选择执行的sql语句
-            tenantSt.executeUpdate("USE `" + dataSource.getDatabaseName() + "`");
-            for (int i = 0; i < tableNameList.size(); i++) {
-                // 根据表名得到当前表结构信息
-                ResultSet structureRs = foundationSt.executeQuery(foundationENDSQL.replace("tableName", tableNameList.get(i)));
-                while (structureRs.next()) {
-                    // 增加租户基础表
-                    tenantSt.executeUpdate(structureRs.getString(2));
+            // mysql 数据库执行查库
+            if (dataSource.getDatabaseType().equals("mysql")) {
+
+                //查询当前库中的所有表信息
+                ResultSet foundationRs = foundationSt.executeQuery(foundationSQL);
+
+                List<String> tableNameList = new ArrayList<>();
+                // 封装数据,执行创建表操作
+                while (foundationRs.next()) {
+                    // 得到结果集->表名称
+                    tableNameList.add(foundationRs.getString(1));
+                }
+                // 选择执行的sql语句
+                tenantSt.executeUpdate("USE `" + dataSource.getDatabaseName() + "`");
+                for (int i = 0; i < tableNameList.size(); i++) {
+                    // 根据表名得到当前表结构信息
+                    ResultSet structureRs = foundationSt.executeQuery(foundationENDSQL.replace("tableName", tableNameList.get(i)));
+                    while (structureRs.next()) {
+                        // 增加租户基础表
+                        tenantSt.executeUpdate(structureRs.getString(2));
+                    }
+                }
+                // 关闭连接
+                foundationRs.close();
+            } else {
+                // 指定要执行的SQL脚本文件
+                String sqlScript = "";
+                switch (dataSource.getDatabaseType()) {
+                    case "sqlserver":
+                        sqlScript = "sql/sqlserver.sql";
+                        break;
+                    case "dm":
+                        sqlScript = "sql/dm.sql";
+                        break;
+                    case "orcale":
+                        sqlScript = "sql/orcale.sql";
+                        break;
                 }
+                // 读取SQL脚本文件
+                BufferedReader reader = new BufferedReader(new FileReader(sqlScript));
+                StringBuffer script = new StringBuffer();
+                String line = null;
+                while ((line = reader.readLine()) != null) {
+                    script.append(line);
+                    script.append(System.lineSeparator());
+                }
+                reader.close();
+                // 将SQL脚本内容作为字符串执行
+                foundationSt.execute(script.toString());
             }
+            // 其他的数据类型则执行sql脚本文件
+            foundationSt.close();
+            foundationCon.close();
             // 关闭数据库连接
             tenantRs.close();
             tenantSt.close();
             tenantCon.close();
-            /////////////////
-            foundationRs.close();
-            foundationSt.close();
-            foundationCon.close();
+
         } catch (Exception e) {
             e.printStackTrace();
             return AjaxResult.warn("初始化数据库异常,请确保连接信息无误!");

+ 121 - 0
zkqy-datamodeling/src/main/resources/sql/dm.sql

@@ -0,0 +1,121 @@
+CREATE TABLE "test1"."adsa"
+(
+"q" DOUBLE PRECISION,
+"w" DATE,
+"e" TIME(0),
+"r" TIMESTAMP(6),
+"t" DATETIME(6),
+"y" TIME(0) WITH TIME ZONE,
+"u" DATETIME(6) WITH TIME ZONE,
+"i" TIMESTAMP(6) WITH LOCAL TIME ZONE,
+"o" DATETIME(6) WITH TIME ZONE,
+"p" TEXT) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."adsa" IS '测试数据类型21-30';
+
+
+CREATE TABLE "test1"."cscs"
+(
+"a" INT,
+"x" BIGINT,
+"c" TINYINT,
+"v" BYTE,
+"j" SMALLINT,
+"h" BINARY(1),
+"k" VARBINARY(10),
+"l" FLOAT,
+"m" DOUBLE,
+"n" REAL) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."cscs" IS '测试数据类型11-20';
+
+
+CREATE TABLE "test1"."customer"
+(
+"id" BIGINT IDENTITY(1, 1) NOT NULL,
+"name" VARCHAR(50),
+"address" VARCHAR(50),
+"phone" VARCHAR(50),
+NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."customer" IS '客户表';
+COMMENT ON COLUMN "test1"."customer"."id" IS '编号';
+COMMENT ON COLUMN "test1"."customer"."name" IS '姓名';
+COMMENT ON COLUMN "test1"."customer"."address" IS '地址';
+COMMENT ON COLUMN "test1"."customer"."phone" IS '电话';
+
+
+CREATE TABLE "test1"."TABLE_1"
+(
+"name" CHAR(10),
+"age" CHAR(10)) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."TABLE_1" IS '测试';
+
+
+CREATE TABLE "test1"."TABLE_2"
+(
+"a" CHAR(10),
+"COLUMN_1" CHARACTER(10),
+"COLUMN_2" VARCHAR(50),
+"COLUMN_3" VARCHAR2(50),
+"COLUMN_4" NUMERIC(22,6),
+"COLUMN_5" DECIMAL(22,6),
+"COLUMN_6" NUMBER(22,6),
+"COLUMN_7" DEC(22,6),
+"COLUMN_8" BIT,
+"COLUMN_9" INTEGER) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+CREATE TABLE "test1"."TABLE_3"
+(
+"COLUMN_1" ROWID,
+"COLUMN_2" "SYS"."AQ$_AGENT") STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."TABLE_3" IS 'a';
+
+
+CREATE TABLE "test1"."table_sql"
+(
+"t_id" BIGINT IDENTITY(1, 1) NOT NULL,
+"table_sql" TEXT,
+"table_condition" TEXT,
+"table_alias" VARCHAR(50),
+"sql_key" VARCHAR(100),
+"table_export_field" TEXT,
+"create_by" VARCHAR(50),
+"create_time" DATETIME(6),
+"update_by" VARCHAR(50),
+"update_time" DATETIME(6),
+"del_flag" CHAR(1),
+NOT CLUSTER PRIMARY KEY("t_id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+CREATE TABLE "test1"."test"
+(
+"id" INT IDENTITY(1, 1) NOT NULL,
+"name" VARCHAR(50),
+"age" INT,
+"address" VARCHAR(50),
+UNIQUE("id"),
+NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON COLUMN "test1"."test"."id" IS '编号';
+COMMENT ON COLUMN "test1"."test"."name" IS '姓名';
+COMMENT ON COLUMN "test1"."test"."age" IS '年龄';
+COMMENT ON COLUMN "test1"."test"."address" IS '地址';
+
+
+CREATE TABLE "test1"."test01"
+(
+"id" FLOAT NOT NULL,
+NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."test01" IS '22';
+
+
+CREATE TABLE "test1"."test02"
+(
+"id" INT) STORAGE(ON "MAIN", CLUSTERBTR) ;
+
+COMMENT ON TABLE "test1"."test02" IS '02';
+
+

+ 719 - 0
zkqy-datamodeling/src/main/resources/sql/oracle.sql

@@ -0,0 +1,719 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : otest用户
+ Source Server Type    : Oracle
+ Source Server Version : 110200
+ Source Host           : localhost:1521
+ Source Schema         : OTEST
+
+ Target Server Type    : Oracle
+ Target Server Version : 110200
+ File Encoding         : 65001
+
+ Date: 08/09/2023 09:53:23
+*/
+
+
+-- ----------------------------
+-- Table structure for AA
+-- ----------------------------
+DROP TABLE "OTEST"."AA";
+CREATE TABLE "OTEST"."AA" (
+  "ID" NUMBER
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of AA
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for AAPPPP
+-- ----------------------------
+DROP TABLE "OTEST"."AAPPPP";
+CREATE TABLE "OTEST"."AAPPPP" (
+  "ID" VARCHAR2(20 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON TABLE "OTEST"."AAPPPP" IS '表注释';
+
+-- ----------------------------
+-- Records of AAPPPP
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for AAZW
+-- ----------------------------
+DROP TABLE "OTEST"."AAZW";
+CREATE TABLE "OTEST"."AAZW" (
+  "ID" VARCHAR2(20 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of AAZW
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for CC
+-- ----------------------------
+DROP TABLE "OTEST"."CC";
+CREATE TABLE "OTEST"."CC" (
+  "ID" NUMBER,
+  "NAME" VARCHAR2(54 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of CC
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for CCE
+-- ----------------------------
+DROP TABLE "OTEST"."CCE";
+CREATE TABLE "OTEST"."CCE" (
+  "ID" NUMBER,
+  "T_ID" NUMBER,
+  "TABLE_SQL" VARCHAR2(50 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of CCE
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for CCWE
+-- ----------------------------
+DROP TABLE "OTEST"."CCWE";
+CREATE TABLE "OTEST"."CCWE" (
+  "ID" NUMBER,
+  "T_ID" NUMBER,
+  "TABLE_SQL" VARCHAR2(50 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of CCWE
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for CSCSCS
+-- ----------------------------
+DROP TABLE "OTEST"."CSCSCS";
+CREATE TABLE "OTEST"."CSCSCS" (
+  "ID" NUMBER NOT NULL,
+  "NAME" VARCHAR2(50 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."CSCSCS"."ID" IS '编号';
+COMMENT ON COLUMN "OTEST"."CSCSCS"."NAME" IS '名称';
+
+-- ----------------------------
+-- Records of CSCSCS
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for CUSTOMER
+-- ----------------------------
+DROP TABLE "OTEST"."CUSTOMER";
+CREATE TABLE "OTEST"."CUSTOMER" (
+  "ID" NUMBER NOT NULL,
+  "NAME" VARCHAR2(30 BYTE),
+  "ADDRESS" VARCHAR2(30 BYTE),
+  "PHONE" VARCHAR2(30 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  INITIAL 65536 
+  NEXT 1048576 
+  MINEXTENTS 1
+  MAXEXTENTS 2147483645
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."CUSTOMER"."ID" IS '编号';
+COMMENT ON COLUMN "OTEST"."CUSTOMER"."NAME" IS '姓名';
+COMMENT ON COLUMN "OTEST"."CUSTOMER"."ADDRESS" IS '地址';
+COMMENT ON COLUMN "OTEST"."CUSTOMER"."PHONE" IS '电话';
+
+-- ----------------------------
+-- Records of CUSTOMER
+-- ----------------------------
+INSERT INTO "OTEST"."CUSTOMER" VALUES ('1', 'oracle1', 'oracle1', '15369630210');
+INSERT INTO "OTEST"."CUSTOMER" VALUES ('2', 'oracle2', 'oracle2', '16698989874');
+INSERT INTO "OTEST"."CUSTOMER" VALUES ('3', 'oracle3', 'oracle3', '17898963696');
+
+-- ----------------------------
+-- Table structure for DRAG_FORM
+-- ----------------------------
+DROP TABLE "OTEST"."DRAG_FORM";
+CREATE TABLE "OTEST"."DRAG_FORM" (
+  "F_ID" NUMBER,
+  "DF_NAME" VARCHAR2(100 BYTE),
+  "DF_NICKNAME" VARCHAR2(100 BYTE),
+  "DF_VUE_TEMPLATE" VARCHAR2(100 BYTE),
+  "DF_HTML_TEMPLATE" VARCHAR2(100 BYTE),
+  "DF_FORM_SQL" VARCHAR2(255 BYTE),
+  "DF_NODE_ID" NUMBER,
+  "DF_DATABASE" VARCHAR2(50 BYTE),
+  "DF_TABLE_NAME" VARCHAR2(50 BYTE),
+  "DF_FLIE_PATH" VARCHAR2(255 BYTE),
+  "DF_NOTES" VARCHAR2(200 BYTE),
+  "DEL_FLAG" VARCHAR2(100 BYTE),
+  "CREATE_TIME" VARCHAR2(100 BYTE),
+  "CREATE_BY" VARCHAR2(255 BYTE),
+  "UPDATE_BY" VARCHAR2(50 BYTE),
+  "UPDATE_TIME" VARCHAR2(100 BYTE),
+  "SPARE" VARCHAR2(255 BYTE),
+  "SPARE1" VARCHAR2(255 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  INITIAL 65536 
+  NEXT 1048576 
+  MINEXTENTS 1
+  MAXEXTENTS 2147483645
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of DRAG_FORM
+-- ----------------------------
+INSERT INTO "OTEST"."DRAG_FORM" VALUES ('1', '1', '1', ' ', ' ', NULL, '1', NULL, '1', NULL, NULL, '0', '2023-07-25 10:57:56', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO "OTEST"."DRAG_FORM" VALUES ('2', '1', '1', ' ', ' ', NULL, '2', NULL, '1', NULL, NULL, '0', '2023-07-25 10:57:56', NULL, NULL, NULL, NULL, NULL);
+INSERT INTO "OTEST"."DRAG_FORM" VALUES ('3', '1', '1', ' ', ' ', NULL, '3', NULL, '1', NULL, NULL, '0', '2023-07-25 10:57:56', NULL, NULL, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for HHH
+-- ----------------------------
+DROP TABLE "OTEST"."HHH";
+CREATE TABLE "OTEST"."HHH" (
+  "ID" NUMBER NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."HHH"."ID" IS '编号';
+
+-- ----------------------------
+-- Records of HHH
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for HHHH
+-- ----------------------------
+DROP TABLE "OTEST"."HHHH";
+CREATE TABLE "OTEST"."HHHH" (
+  "ID" NUMBER NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."HHHH"."ID" IS '编号';
+
+-- ----------------------------
+-- Records of HHHH
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for HHHHH
+-- ----------------------------
+DROP TABLE "OTEST"."HHHHH";
+CREATE TABLE "OTEST"."HHHHH" (
+  "ID" NUMBER
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of HHHHH
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TABLE_SQL
+-- ----------------------------
+DROP TABLE "OTEST"."TABLE_SQL";
+CREATE TABLE "OTEST"."TABLE_SQL" (
+  "ID" NUMBER,
+  "T_ID" NUMBER,
+  "TABLE_SQL" VARCHAR2(255 BYTE),
+  "TABLE_CONDITION" VARCHAR2(50 BYTE),
+  "TABLE_ALIAS" VARCHAR2(50 BYTE),
+  "SQL_KEY" VARCHAR2(50 BYTE),
+  "TABLE_EXPORT_FIELD" VARCHAR2(50 BYTE),
+  "CREATE_BY" VARCHAR2(50 BYTE),
+  "CREATE_TIME" TIMESTAMP(6),
+  "UPDATE_BY" VARCHAR2(50 BYTE),
+  "UPDATE_TIME" TIMESTAMP(6),
+  "DEL_FLAG" VARCHAR2(50 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  INITIAL 65536 
+  NEXT 1048576 
+  MINEXTENTS 1
+  MAXEXTENTS 2147483645
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TABLE_SQL
+-- ----------------------------
+INSERT INTO "OTEST"."TABLE_SQL" VALUES ('1', '1', 'SELECT
+	* 
+FROM
+	table_sql t
+	INNER JOIN drag_form d ON d.f_id = t.id ', 'AND  t.id  = ''#{val}''', '12', '123', NULL, NULL, NULL, NULL, NULL, NULL);
+INSERT INTO "OTEST"."TABLE_SQL" VALUES ('2', '2', '2', '2', '2', '2', NULL, NULL, NULL, NULL, NULL, NULL);
+
+-- ----------------------------
+-- Table structure for TEST
+-- ----------------------------
+DROP TABLE "OTEST"."TEST";
+CREATE TABLE "OTEST"."TEST" (
+  "ID" NUMBER NOT NULL,
+  "NAME" VARCHAR2(255 BYTE),
+  "AGE" NUMBER,
+  "ADDRESS" VARCHAR2(255 BYTE)
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  INITIAL 65536 
+  NEXT 1048576 
+  MINEXTENTS 1
+  MAXEXTENTS 2147483645
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."TEST"."ID" IS '编号';
+COMMENT ON COLUMN "OTEST"."TEST"."NAME" IS '姓名';
+COMMENT ON COLUMN "OTEST"."TEST"."AGE" IS '年龄';
+COMMENT ON COLUMN "OTEST"."TEST"."ADDRESS" IS '地址';
+COMMENT ON TABLE "OTEST"."TEST" IS '注释';
+
+-- ----------------------------
+-- Records of TEST
+-- ----------------------------
+INSERT INTO "OTEST"."TEST" VALUES ('1', 'oracle', '18', 'oracle');
+INSERT INTO "OTEST"."TEST" VALUES ('2', 'oracle2', '19', 'oracle2');
+INSERT INTO "OTEST"."TEST" VALUES ('3', '18', NULL, NULL);
+
+-- ----------------------------
+-- Table structure for TEST1
+-- ----------------------------
+DROP TABLE "OTEST"."TEST1";
+CREATE TABLE "OTEST"."TEST1" (
+  "NAME" VARCHAR2(30 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."TEST1"."NAME" IS '名称';
+
+-- ----------------------------
+-- Records of TEST1
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST2
+-- ----------------------------
+DROP TABLE "OTEST"."TEST2";
+CREATE TABLE "OTEST"."TEST2" (
+  "NAME" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."TEST2"."NAME" IS '姓名';
+
+-- ----------------------------
+-- Records of TEST2
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST3
+-- ----------------------------
+DROP TABLE "OTEST"."TEST3";
+CREATE TABLE "OTEST"."TEST3" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TEST3
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST4
+-- ----------------------------
+DROP TABLE "OTEST"."TEST4";
+CREATE TABLE "OTEST"."TEST4" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL,
+  "NAME" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TEST4
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST5
+-- ----------------------------
+DROP TABLE "OTEST"."TEST5";
+CREATE TABLE "OTEST"."TEST5" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TEST5
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST6
+-- ----------------------------
+DROP TABLE "OTEST"."TEST6";
+CREATE TABLE "OTEST"."TEST6" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL,
+  "NAMEO" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TEST6
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST7
+-- ----------------------------
+DROP TABLE "OTEST"."TEST7";
+CREATE TABLE "OTEST"."TEST7" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL,
+  "NAMEO" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+
+-- ----------------------------
+-- Records of TEST7
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for TEST8
+-- ----------------------------
+DROP TABLE "OTEST"."TEST8";
+CREATE TABLE "OTEST"."TEST8" (
+  "ID" VARCHAR2(200 BYTE) NOT NULL,
+  "NAMEO" VARCHAR2(200 BYTE) NOT NULL
+)
+LOGGING
+NOCOMPRESS
+PCTFREE 10
+INITRANS 1
+STORAGE (
+  BUFFER_POOL DEFAULT
+)
+PARALLEL 1
+NOCACHE
+DISABLE ROW MOVEMENT
+;
+COMMENT ON COLUMN "OTEST"."TEST8"."ID" IS '编号';
+COMMENT ON COLUMN "OTEST"."TEST8"."NAMEO" IS '名称';
+
+-- ----------------------------
+-- Records of TEST8
+-- ----------------------------
+
+-- ----------------------------
+-- Checks structure for table AAPPPP
+-- ----------------------------
+ALTER TABLE "OTEST"."AAPPPP" ADD CONSTRAINT "SYS_C0011148" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table AAZW
+-- ----------------------------
+ALTER TABLE "OTEST"."AAZW" ADD CONSTRAINT "SYS_C0011147" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Primary Key structure for table CSCSCS
+-- ----------------------------
+ALTER TABLE "OTEST"."CSCSCS" ADD CONSTRAINT "SYS_C0011764" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table CSCSCS
+-- ----------------------------
+ALTER TABLE "OTEST"."CSCSCS" ADD CONSTRAINT "SYS_C0011763" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Primary Key structure for table CUSTOMER
+-- ----------------------------
+ALTER TABLE "OTEST"."CUSTOMER" ADD CONSTRAINT "SYS_C0011762" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table CUSTOMER
+-- ----------------------------
+ALTER TABLE "OTEST"."CUSTOMER" ADD CONSTRAINT "SYS_C0011064" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Primary Key structure for table HHH
+-- ----------------------------
+ALTER TABLE "OTEST"."HHH" ADD CONSTRAINT "SYS_C0011419" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table HHH
+-- ----------------------------
+ALTER TABLE "OTEST"."HHH" ADD CONSTRAINT "SYS_C0011418" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Primary Key structure for table HHHH
+-- ----------------------------
+ALTER TABLE "OTEST"."HHHH" ADD CONSTRAINT "SYS_C0011421" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table HHHH
+-- ----------------------------
+ALTER TABLE "OTEST"."HHHH" ADD CONSTRAINT "SYS_C0011420" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Primary Key structure for table TEST
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST" ADD CONSTRAINT "SYS_C0011482" PRIMARY KEY ("ID");
+
+-- ----------------------------
+-- Checks structure for table TEST
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST" ADD CONSTRAINT "SYS_C0011481" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST1
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST1" ADD CONSTRAINT "SYS_C0011063" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST2
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST2" ADD CONSTRAINT "SYS_C0011117" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST3
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST3" ADD CONSTRAINT "SYS_C0011118" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST4
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST4" ADD CONSTRAINT "SYS_C0011119" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "OTEST"."TEST4" ADD CONSTRAINT "SYS_C0011120" CHECK ("NAME" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST5
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST5" ADD CONSTRAINT "SYS_C0011121" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST6
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST6" ADD CONSTRAINT "SYS_C0011122" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "OTEST"."TEST6" ADD CONSTRAINT "SYS_C0011123" CHECK ("NAMEO" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST7
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST7" ADD CONSTRAINT "SYS_C0011124" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "OTEST"."TEST7" ADD CONSTRAINT "SYS_C0011125" CHECK ("NAMEO" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+
+-- ----------------------------
+-- Checks structure for table TEST8
+-- ----------------------------
+ALTER TABLE "OTEST"."TEST8" ADD CONSTRAINT "SYS_C0011126" CHECK ("ID" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;
+ALTER TABLE "OTEST"."TEST8" ADD CONSTRAINT "SYS_C0011127" CHECK ("NAMEO" IS NOT NULL) NOT DEFERRABLE INITIALLY IMMEDIATE NORELY VALIDATE;

+ 528 - 0
zkqy-datamodeling/src/main/resources/sql/sqlserver.sql

@@ -0,0 +1,528 @@
+/*
+ Navicat Premium Data Transfer
+
+ Source Server         : sql server
+ Source Server Type    : SQL Server
+ Source Server Version : 16001000
+ Source Host           : localhost:1433
+ Source Catalog        : test
+ Source Schema         : dbo
+
+ Target Server Type    : SQL Server
+ Target Server Version : 16001000
+ File Encoding         : 65001
+
+ Date: 08/09/2023 09:52:06
+*/
+
+
+-- ----------------------------
+-- Table structure for cs
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[cs]') AND type IN ('U'))
+	DROP TABLE [dbo].[cs]
+GO
+
+CREATE TABLE [dbo].[cs] (
+  [a] nvarchar(max) COLLATE Chinese_PRC_CI_AS  NULL,
+  [b] real  NULL,
+  [c] smalldatetime  NULL,
+  [d] smallint  NULL,
+  [e] smallmoney  NULL,
+  [f] sql_variant  NULL,
+  [g] sysname  NOT NULL,
+  [h] text COLLATE Chinese_PRC_CI_AS  NULL,
+  [i] time(7)  NULL,
+  [j] timestamp  NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[cs] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试数据类型21-30',
+'SCHEMA', N'dbo',
+'TABLE', N'cs'
+GO
+
+
+-- ----------------------------
+-- Records of cs
+-- ----------------------------
+INSERT INTO [dbo].[cs] ([a], [b], [c], [d], [e], [f], [g], [h], [i], [j]) VALUES (N'11', N'111', N'2023-09-06 14:52:00', NULL, NULL, NULL, N'111', NULL, NULL, 0x000000000000E299)
+GO
+
+
+-- ----------------------------
+-- Table structure for cscs
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[cscs]') AND type IN ('U'))
+	DROP TABLE [dbo].[cscs]
+GO
+
+CREATE TABLE [dbo].[cscs] (
+  [q] bigint  NULL,
+  [w] binary(10)  NULL,
+  [e] bit  NULL,
+  [t] char(1) COLLATE Chinese_PRC_CI_AS  NULL,
+  [a] date  NULL,
+  [s] datetime  NULL,
+  [d] datetime2(7)  NULL,
+  [f] datetimeoffset(7)  NULL,
+  [h] datetimeoffset(7)  NULL,
+  [j] decimal(18)  NULL
+)
+GO
+
+ALTER TABLE [dbo].[cscs] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'q',
+'SCHEMA', N'dbo',
+'TABLE', N'cscs',
+'COLUMN', N'q'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'1',
+'SCHEMA', N'dbo',
+'TABLE', N'cscs',
+'COLUMN', N'w'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试字段类型1-10',
+'SCHEMA', N'dbo',
+'TABLE', N'cscs'
+GO
+
+
+-- ----------------------------
+-- Records of cscs
+-- ----------------------------
+INSERT INTO [dbo].[cscs] ([q], [w], [e], [t], [a], [s], [d], [f], [h], [j]) VALUES (N'1111111111', NULL, N'1', NULL, NULL, NULL, N'2023-09-06 13:51:51.0000000', N'2023-10-07 13:51:57.0000000', N'2023-09-27 13:52:07.0000000', NULL)
+GO
+
+
+-- ----------------------------
+-- Table structure for cscscs
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[cscscs]') AND type IN ('U'))
+	DROP TABLE [dbo].[cscscs]
+GO
+
+CREATE TABLE [dbo].[cscscs] (
+  [q] geography  NULL,
+  [w] geometry  NULL,
+  [e] hierarchyid  NULL,
+  [r] image  NULL,
+  [t] int  NULL,
+  [y] money  NULL,
+  [u] nchar(5) COLLATE Chinese_PRC_CI_AS  NULL,
+  [i] ntext COLLATE Chinese_PRC_CI_AS  NULL,
+  [o] numeric(18)  NULL,
+  [p] nvarchar(50) COLLATE Chinese_PRC_CI_AS  NULL
+)
+GO
+
+ALTER TABLE [dbo].[cscscs] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试数据类型11-20',
+'SCHEMA', N'dbo',
+'TABLE', N'cscscs'
+GO
+
+
+-- ----------------------------
+-- Records of cscscs
+-- ----------------------------
+INSERT INTO [dbo].[cscscs] ([q], [w], [e], [r], [t], [y], [u], [i], [o], [p]) VALUES (NULL, NULL, NULL, NULL, NULL, N'1.0000', NULL, N'11', N'1', NULL)
+GO
+
+
+-- ----------------------------
+-- Table structure for cscscscs
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[cscscscs]') AND type IN ('U'))
+	DROP TABLE [dbo].[cscscscs]
+GO
+
+CREATE TABLE [dbo].[cscscscs] (
+  [q] tinyint  NULL,
+  [w] uniqueidentifier  NULL,
+  [e] varbinary(1)  NULL,
+  [rhb] varbinary(max)  NULL,
+  [ber] varchar(50) COLLATE Chinese_PRC_CI_AS  NULL,
+  [nn] varchar(max) COLLATE Chinese_PRC_CI_AS  NULL,
+  [rn] xml  NULL
+)
+GO
+
+ALTER TABLE [dbo].[cscscscs] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试数据类型31-39',
+'SCHEMA', N'dbo',
+'TABLE', N'cscscscs'
+GO
+
+
+-- ----------------------------
+-- Records of cscscscs
+-- ----------------------------
+INSERT INTO [dbo].[cscscscs] ([q], [w], [e], [rhb], [ber], [nn], [rn]) VALUES (N'111', NULL, NULL, NULL, N'1', N'1', N'1')
+GO
+
+
+-- ----------------------------
+-- Table structure for customer
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[customer]') AND type IN ('U'))
+	DROP TABLE [dbo].[customer]
+GO
+
+CREATE TABLE [dbo].[customer] (
+  [id] int  IDENTITY(1,1) NOT NULL,
+  [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
+  [address] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
+  [phone] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL
+)
+GO
+
+ALTER TABLE [dbo].[customer] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'客户编号',
+'SCHEMA', N'dbo',
+'TABLE', N'customer',
+'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'客户名称',
+'SCHEMA', N'dbo',
+'TABLE', N'customer',
+'COLUMN', N'name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'地址',
+'SCHEMA', N'dbo',
+'TABLE', N'customer',
+'COLUMN', N'address'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'电话',
+'SCHEMA', N'dbo',
+'TABLE', N'customer',
+'COLUMN', N'phone'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'客户表',
+'SCHEMA', N'dbo',
+'TABLE', N'customer'
+GO
+
+
+-- ----------------------------
+-- Records of customer
+-- ----------------------------
+SET IDENTITY_INSERT [dbo].[customer] ON
+GO
+
+INSERT INTO [dbo].[customer] ([id], [name], [address], [phone]) VALUES (N'1', N'赵六', N'河北', N'15625845621')
+GO
+
+INSERT INTO [dbo].[customer] ([id], [name], [address], [phone]) VALUES (N'2', N'赵七', N'北京', N'16587952140')
+GO
+
+SET IDENTITY_INSERT [dbo].[customer] OFF
+GO
+
+
+-- ----------------------------
+-- Table structure for table_sql
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[table_sql]') AND type IN ('U'))
+	DROP TABLE [dbo].[table_sql]
+GO
+
+CREATE TABLE [dbo].[table_sql] (
+  [t_id] bigint  IDENTITY(1,1) NOT NULL,
+  [table_sql] text COLLATE Chinese_PRC_CI_AS  NULL,
+  [table_condition] text COLLATE Chinese_PRC_CI_AS  NULL,
+  [table_alias] varchar(50) COLLATE Chinese_PRC_CI_AS  NULL,
+  [sql_key] varchar(100) COLLATE Chinese_PRC_CI_AS  NULL,
+  [table_export_field] text COLLATE Chinese_PRC_CI_AS  NULL,
+  [create_by] varchar(50) COLLATE Chinese_PRC_CI_AS  NULL,
+  [create_time] datetime  NULL,
+  [update_by] varchar(50) COLLATE Chinese_PRC_CI_AS  NULL,
+  [update_time] datetime  NULL,
+  [del_flag] char(1) COLLATE Chinese_PRC_CI_AS  NULL
+)
+GO
+
+ALTER TABLE [dbo].[table_sql] SET (LOCK_ESCALATION = TABLE)
+GO
+
+
+-- ----------------------------
+-- Records of table_sql
+-- ----------------------------
+SET IDENTITY_INSERT [dbo].[table_sql] ON
+GO
+
+INSERT INTO [dbo].[table_sql] ([t_id], [table_sql], [table_condition], [table_alias], [sql_key], [table_export_field], [create_by], [create_time], [update_by], [update_time], [del_flag]) VALUES (N'1', N'SELECT * FROM drag_form AS dragform', N'AND dragform.df_name like concat(''%'', ''#{val}'', ''%'')
+AND dragform.df_nickname like concat(''%'', #{val}, ''%'')
+AND dragform.del_flag = #{val}
+AND dragform.df_node_id in (#{val})
+AND dragform.create_time between #{timeframe}', N'dragform', N'abc', N'{
+    "id":"编号",
+    "name":"名称",
+    "address":"地址",
+    "phone":"手机号"
+}', N'name,age,sex', N'2023-07-25 17:20:54.000', NULL, N'2023-07-25 17:20:54.000', N'0')
+GO
+
+SET IDENTITY_INSERT [dbo].[table_sql] OFF
+GO
+
+
+-- ----------------------------
+-- Table structure for test
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[test]') AND type IN ('U'))
+	DROP TABLE [dbo].[test]
+GO
+
+CREATE TABLE [dbo].[test] (
+  [id] int  NOT NULL,
+  [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
+  [age] int  NULL,
+  [address] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL
+)
+GO
+
+ALTER TABLE [dbo].[test] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'编号',
+'SCHEMA', N'dbo',
+'TABLE', N'test',
+'COLUMN', N'id'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'姓名',
+'SCHEMA', N'dbo',
+'TABLE', N'test',
+'COLUMN', N'name'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'年龄',
+'SCHEMA', N'dbo',
+'TABLE', N'test',
+'COLUMN', N'age'
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'地址',
+'SCHEMA', N'dbo',
+'TABLE', N'test',
+'COLUMN', N'address'
+GO
+
+
+-- ----------------------------
+-- Records of test
+-- ----------------------------
+INSERT INTO [dbo].[test] ([id], [name], [age], [address]) VALUES (N'1', N'sqlserver', N'18', N'澳大利亚')
+GO
+
+INSERT INTO [dbo].[test] ([id], [name], [age], [address]) VALUES (N'2', N'sqlserver2', N'19', N'海南')
+GO
+
+INSERT INTO [dbo].[test] ([id], [name], [age], [address]) VALUES (N'3', N'18', NULL, NULL)
+GO
+
+
+-- ----------------------------
+-- Table structure for test_2
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[test_2]') AND type IN ('U'))
+	DROP TABLE [dbo].[test_2]
+GO
+
+CREATE TABLE [dbo].[test_2] (
+  [id] char(123) COLLATE Chinese_PRC_CI_AS  NOT NULL
+)
+GO
+
+ALTER TABLE [dbo].[test_2] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试新增2',
+'SCHEMA', N'dbo',
+'TABLE', N'test_2'
+GO
+
+
+-- ----------------------------
+-- Records of test_2
+-- ----------------------------
+
+-- ----------------------------
+-- Table structure for test_3
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[test_3]') AND type IN ('U'))
+	DROP TABLE [dbo].[test_3]
+GO
+
+CREATE TABLE [dbo].[test_3] (
+  [id] bit  NULL
+)
+GO
+
+ALTER TABLE [dbo].[test_3] SET (LOCK_ESCALATION = TABLE)
+GO
+
+EXEC sp_addextendedproperty
+'MS_Description', N'测试3',
+'SCHEMA', N'dbo',
+'TABLE', N'test_3'
+GO
+
+
+-- ----------------------------
+-- Records of test_3
+-- ----------------------------
+
+-- ----------------------------
+-- procedure structure for ShowCreateTable
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[ShowCreateTable]') AND type IN ('P', 'PC', 'RF', 'X'))
+	DROP PROCEDURE[dbo].[ShowCreateTable]
+GO
+
+CREATE PROCEDURE [dbo].[ShowCreateTable] @tableName NVARCHAR(128)  
+AS  
+BEGIN  
+    SET NOCOUNT ON;  
+  
+    DECLARE @sql NVARCHAR(MAX);  
+    DECLARE @objectId INT;  
+    DECLARE @schemaName NVARCHAR(128);  
+    DECLARE @tableNameWithoutSchema NVARCHAR(128);  
+    DECLARE @columnList NVARCHAR(MAX);  
+  
+    -- 获取表名、架构名和无架构的表名  
+    SET @tableNameWithoutSchema = SUBSTRING(@tableName, CHARINDEX('.', @tableName) + 1, LEN(@tableName) - CHARINDEX('.', @tableName));  
+    SET @schemaName = SUBSTRING(@tableName, 1, CHARINDEX('.', @tableName) - 1);  
+    SET @objectId = OBJECT_ID(@tableName);  
+  
+    -- 构建列列表  
+    SELECT @columnList = COALESCE(@columnList + ', ', '') + QUOTENAME(c.name) + ' ' + UPPER(t.name) + COALESCE('(' + CAST(c.max_length AS NVARCHAR(10)) + ')','') + COALESCE(' [' + t2.name + ']', '') + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END  
+    FROM sys.tables AS t  
+    JOIN sys.columns AS c ON t.object_id = c.object_id  
+    JOIN sys.types AS t1 ON c.user_type_id = t1.user_type_id  
+    JOIN sys.types AS t2 ON t1.system_type_id = t2.user_type_id  
+    WHERE t.name = @tableNameWithoutSchema -- 表名  
+        AND t.type = 'U' -- 表类型为表(非系统表)  
+        AND c.name = @tableNameWithoutSchema -- 列名  
+        AND OBJECT_ID(@tableName) IS NOT NULL; -- 表存在  
+  
+    -- 构建 SQL 语句  
+    SET @sql = 'CREATE TABLE ' + QUOTENAME(@schemaName) + '.' + QUOTENAME(@tableNameWithoutSchema) + '(' + @columnList + ')';  
+  
+    -- 执行 SQL 语句并返回结果  
+    EXEC sp_executesql @sql;  
+END;
+GO
+
+
+-- ----------------------------
+-- procedure structure for sp_getCreateTableSql_zzx
+-- ----------------------------
+IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[sp_getCreateTableSql_zzx]') AND type IN ('P', 'PC', 'RF', 'X'))
+	DROP PROCEDURE[dbo].[sp_getCreateTableSql_zzx]
+GO
+
+CREATE PROCEDURE [dbo].[sp_getCreateTableSql_zzx] (@table VARCHAR(100) ) AS BEGIN DECLARE @sql TABLE(s VARCHAR(1000), id INT IDENTITY);
+   INSERT INTO @sql(s)  VALUES('create table [' + @table + '] (');
+   SELECT A.name AS table_name ,B.name AS column_name ,C.value AS column_description INTO #columnsproperties FROM    sys.tables A
+  INNER JOIN sys.columns B ON B.object_id = A.object_id LEFT JOIN sys.extended_properties C ON C.major_id = B.object_id
+  AND C.minor_id = B.column_id WHERE A.name = @table;
+    INSERT INTO @sql(s) SELECT  '  [' + a.COLUMN_NAME + '] ' + DATA_TYPE + COALESCE('(' + CAST(CHARACTER_MAXIMUM_LENGTH AS VARCHAR)
+    + ')', '') + ' ' + CASE WHEN EXISTS(SELECT id FROM syscolumns WHERE OBJECT_NAME(id) = @table
+    AND name = a.COLUMN_NAME  AND COLUMNPROPERTY(id, name,'IsIdentity') = 1 ) THEN 'IDENTITY(' + CAST(IDENT_SEED(@table) AS VARCHAR) + ',' + CAST(IDENT_INCR(@table) AS VARCHAR)
+    + ')' ELSE '' END + ' ' + (CASE WHEN IS_NULLABLE = 'NO' THEN 'NOT ' ELSE '' END ) +'NULL ' + COALESCE('DEFAULT ' + COLUMN_DEFAULT, '')
+    + CASE WHEN ISNULL(CONVERT(VARCHAR, b.column_description), '') <> '' THEN '/**' + ISNULL(CONVERT(VARCHAR, b.column_description),
+    '') + '**/,'  ELSE ',' END FROM    INFORMATION_SCHEMA.COLUMNS a LEFT JOIN #columnsproperties b ON CONVERT(VARCHAR, a.COLUMN_NAME) = CONVERT(VARCHAR, b.column_name)
+  WHERE a.TABLE_NAME = @table  ORDER BY ORDINAL_POSITION; DECLARE @pkname VARCHAR(100); SELECT @pkname = CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
+  WHERE   TABLE_NAME = @table   AND CONSTRAINT_TYPE = 'PRIMARY KEY'; IF(@pkname IS NOT NULL) BEGIN INSERT  INTO @sql(s ) VALUES('  PRIMARY KEY (');
+    INSERT INTO @sql(s) SELECT  '   [' + COLUMN_NAME + '],' FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERE   CONSTRAINT_NAME = @pkname
+  ORDER BY ORDINAL_POSITION; UPDATE @sql  SET s = LEFT(s, LEN(s) - 1)  WHERE id = @@identity; END; INSERT INTO @sql(s) VALUES(')');
+    SELECT s AS CreateTableSQL  FROM @sql ORDER BY id; END;
+GO
+
+
+-- ----------------------------
+-- Auto increment value for customer
+-- ----------------------------
+DBCC CHECKIDENT ('[dbo].[customer]', RESEED, 4)
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table customer
+-- ----------------------------
+ALTER TABLE [dbo].[customer] ADD CONSTRAINT [PK__customer__3213E83F9F7147CE] PRIMARY KEY CLUSTERED ([id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Auto increment value for table_sql
+-- ----------------------------
+DBCC CHECKIDENT ('[dbo].[table_sql]', RESEED, 1)
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table table_sql
+-- ----------------------------
+ALTER TABLE [dbo].[table_sql] ADD CONSTRAINT [PK__table_sq__E579775FAE0AA88D] PRIMARY KEY CLUSTERED ([t_id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table test
+-- ----------------------------
+ALTER TABLE [dbo].[test] ADD CONSTRAINT [PK__test__3213E83FE905A5E7] PRIMARY KEY CLUSTERED ([id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+
+
+-- ----------------------------
+-- Primary Key structure for table test_2
+-- ----------------------------
+ALTER TABLE [dbo].[test_2] ADD CONSTRAINT [PK__test_2__3213E83F56AF7291] PRIMARY KEY CLUSTERED ([id])
+WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
+ON [PRIMARY]
+GO
+