zoukankan      html  css  js  c++  java
  • java 执行sql文件

    # 背景

    用例执行完毕,期望回滚数据,因此希望执行sql来回滚数据

    # 步骤

    直接show代码,借助的是mybatis的ScriptRunner

    /**
         * 执行xx库下的表备份脚本
         *
         * @param tableName
         */
        public static void runSqlInStat(String tableName) {
    
            String className = Configurations.INSTANCE.get("jdbc.xx.driver");
            String dbUrl = Configurations.INSTANCE.get("jdbc.xx.url");
            String dbUsername = Configurations.INSTANCE.get("jdbc.xx.username");
            String dbPassword = Configurations.INSTANCE.get("jdbc.xx.password");
    
            try {
                Class.forName(className);
                Connection conn = DriverManager.getConnection(dbUrl, dbUsername, dbPassword);
                ScriptRunner runner = new ScriptRunner(conn);
                runner.setAutoCommit(true);
    
                String fileName = String.format("src/main/resources/db/%s.sql", tableName);
                File file = new File(fileName);
    
                try {
                    if (file.getName().endsWith(".sql")) {
                        runner.setFullLineDelimiter(false);
                        runner.setDelimiter(";");//语句结束符号设置
                        runner.setLogWriter(null);//日志数据输出,这样就不会输出过程
                        runner.setSendFullScript(false);
                        runner.setAutoCommit(true);
                        runner.setStopOnError(true);
                        runner.runScript(new InputStreamReader(new FileInputStream(fileName), "utf8"));
                        logger.info(String.format("【%s】回滚成功", tableName));
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
    
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
    
                e.printStackTrace();
            }
    
        }
  • 相关阅读:
    别人的代码
    ZOJ 1914 Arctic Network
    今日所得 2.22
    poj 2031 Building a Space Station
    POJ 1251 Jungle Roads
    优秀的开发者 vs. 糟糕的开发者
    有关读书求知的一些想法
    开发者拒绝写技术博客的常见理由
    写代码如坐禅:你是哪一类程序员?
    [C++] c++ new() 与new[]的区别
  • 原文地址:https://www.cnblogs.com/jwentest/p/8761357.html
Copyright © 2011-2022 走看看