diff --git a/src/main/java/Tools/CC_DangJianImportQuestion.java b/src/main/java/Tools/CC_DangJianImportQuestion.java index 6a9f2fd..002de11 100644 --- a/src/main/java/Tools/CC_DangJianImportQuestion.java +++ b/src/main/java/Tools/CC_DangJianImportQuestion.java @@ -3,18 +3,19 @@ package Tools; import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelUtil; import com.dsideal.FengHuang.Util.CommonUtil; +import com.dsideal.FengHuang.Util.PgSqlUtil; import com.jfinal.kit.PropKit; -import com.jfinal.kit.StrKit; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.dialect.PostgreSqlDialect; import com.jfinal.plugin.druid.DruidPlugin; -import com.jfinal.plugin.redis.RedisPlugin; +import java.io.File; import java.util.*; public class CC_DangJianImportQuestion { + public static void main(String[] args) { //1、配置数据库 PropKit.use("application.properties"); @@ -24,9 +25,28 @@ public class CC_DangJianImportQuestion { druid.start(); // 配置ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(druid); + + //遍历sql目录下所有的sql文件 + File sqlDir; + String basePath = CC_DangJianImportQuestion.class.getClassLoader().getResource(".").getPath(); + sqlDir = new File(basePath + "/Sql"); + File[] sqlFiles = sqlDir.listFiles(); + for (File sqlFile : sqlFiles != null ? sqlFiles : new File[0]) { + //只加载.sql文件 + if (sqlFile.getName().indexOf(".sql") > 0) { + arp.addSqlTemplate("/Sql/" + sqlFile.getName()); + } + } + //设置方言 + arp.setDialect(new PostgreSqlDialect()); arp.start(); - String excelFile = "D:\\dsWork\\ccDangJianExam\\Doc\\党建试题.xlsx"; + //清库脚本 + PgSqlUtil.Truncate("t_exam_person"); + PgSqlUtil.Truncate("t_exam_record"); + PgSqlUtil.Truncate("t_exam_question"); + + String excelFile = "D:\\dsWork\\ccDangJianExamForOpenGauss\\Doc\\党建试题.xlsx"; ExcelReader reader = ExcelUtil.getReader(excelFile); List> list = reader.readAll(); @@ -36,11 +56,6 @@ public class CC_DangJianImportQuestion { for (Record record : typeList) { _map.put(record.getStr("type_name"), record.getInt("type_id")); } - sql = "truncate table t_exam_question"; - Db.update(sql); - - sql = "truncate table t_exam_record"; - Db.update(sql); int cnt = 0; for (Map record : list) { @@ -61,13 +76,13 @@ public class CC_DangJianImportQuestion { Record writeR = new Record(); writeR.set("type_id", type_id); writeR.set("content", content); - writeR.set("A", A); - writeR.set("B", B); - writeR.set("C", C); - writeR.set("D", D); - writeR.set("E", E); - writeR.set("F", F); - writeR.set("G", G); + writeR.set("a", A); + writeR.set("b", B); + writeR.set("c", C); + writeR.set("d", D); + writeR.set("e", E); + writeR.set("f", F); + writeR.set("g", G); writeR.set("answer", answer); writeR.set("memo", memo); writeR.set("score", score); diff --git a/src/main/java/com/dsideal/FengHuang/Util/PgSqlUtil.java b/src/main/java/com/dsideal/FengHuang/Util/PgSqlUtil.java new file mode 100644 index 0000000..1b8b4ea --- /dev/null +++ b/src/main/java/com/dsideal/FengHuang/Util/PgSqlUtil.java @@ -0,0 +1,41 @@ +package com.dsideal.FengHuang.Util; + +import com.jfinal.kit.Kv; +import com.jfinal.kit.StrKit; +import com.jfinal.plugin.activerecord.Db; +import com.jfinal.plugin.activerecord.Record; +import com.jfinal.plugin.activerecord.SqlPara; + +import java.util.List; + +public class PgSqlUtil { + protected static String getPkColumnName(String table_name) { + Kv kv = Kv.by("table_name", table_name); + SqlPara sp = Db.getSqlPara("PgSql.getSinglePk", kv); + List list = Db.find(sp); + if (list.size() == 0) return null; + return Db.find(sp).get(0).getStr("colname"); + } + + protected static String getSeqNameByTableName(String table_name) { + String pkName = getPkColumnName(table_name); + if (!pkName.equals(null)) { + String sql = "SELECT pg_get_serial_sequence(?,?) as sq_name"; + String sqName = Db.findFirst(sql, table_name, pkName).getStr("sq_name"); + if (StrKit.isBlank(sqName)) return null; + return sqName.replace("public.", ""); + } + return null; + } + + public static void Truncate(String table_name) { + String sql = "truncate table " + table_name; + Db.update(sql); + + String seq_name = getSeqNameByTableName(table_name); + if (!StrKit.isBlank(seq_name)) { + sql = "SELECT setval('" + seq_name + "', 1, false);"; + Db.find(sql); + } + } +} diff --git a/src/main/resource/Sql/PgSql.sql b/src/main/resource/Sql/PgSql.sql new file mode 100644 index 0000000..f100edd --- /dev/null +++ b/src/main/resource/Sql/PgSql.sql @@ -0,0 +1,12 @@ +#namespace("PgSql") + #sql("getSinglePk") + select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from + pg_constraint inner join pg_class + on pg_constraint.conrelid = pg_class.oid + inner join pg_attribute on pg_attribute.attrelid = pg_class.oid + and pg_attribute.attnum = pg_constraint.conkey[1] + inner join pg_type on pg_type.oid = pg_attribute.atttypid + where pg_class.relname = #para(table_name) + and pg_constraint.contype='p' + #end +#end \ No newline at end of file diff --git a/target/classes/Sql/PgSql.sql b/target/classes/Sql/PgSql.sql new file mode 100644 index 0000000..f100edd --- /dev/null +++ b/target/classes/Sql/PgSql.sql @@ -0,0 +1,12 @@ +#namespace("PgSql") + #sql("getSinglePk") + select pg_constraint.conname as pk_name,pg_attribute.attname as colname,pg_type.typname as typename from + pg_constraint inner join pg_class + on pg_constraint.conrelid = pg_class.oid + inner join pg_attribute on pg_attribute.attrelid = pg_class.oid + and pg_attribute.attnum = pg_constraint.conkey[1] + inner join pg_type on pg_type.oid = pg_attribute.atttypid + where pg_class.relname = #para(table_name) + and pg_constraint.contype='p' + #end +#end \ No newline at end of file