Java讀取properties獲取所有配置並生根據key value成SQL

最近有個需求,要把所有nacos的配置在MySQL備份一份,所以就寫了個工具來批量生成SQL insert語句. 整體思路爲:

  • 讀取nacos的properties配置
  • java代碼讀取配置的k,v 生成sql文件
  • 發給DBA導入MySQL即可。
  1. 配置依賴
       <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-configuration2</artifactId>
            <version>2.7</version>
        </dependency>
        <dependency>
            <groupId>commons-beanutils</groupId>
            <artifactId>commons-beanutils</artifactId>
            <version>1.9.4</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.10.0</version>
        </dependency>
  1. 編寫代碼
    @Test
    public void generateTest()throws Exception{
        Configurations configs = new Configurations();
		// 讀取properties配置,指定配置文件地址
        PropertiesConfiguration configuration = configs.properties(new File("config.properties"));
        // 獲取所有key
        Iterator<String> keys = configuration.getKeys();
        // 遍歷生成SQL
        String sqlPrefix = "INSERT INTO configuration (name, value, description, create_date_time) VALUES ('";
        String currentDateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
        LinkedList<String> sqlList = new LinkedList<>();
        keys.forEachRemaining(key->{
            StringBuilder sqlJoiner = new StringBuilder(sqlPrefix).append(key).append("', '")
                    .append(configuration.getString(key)).append("',")
                    .append("'Auto Generation','").append(currentDateTime).append("');");
            System.err.println(sqlJoiner+"\n");
            sqlList.add(sqlJoiner.toString());
        });
		// 生成文件
        File file = FileUtils.getFile("/Users/xxx/Desktop/", "config-nacos-cashier.sql");
        FileUtils.writeLines(file,sqlList);
    }

生成後的文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章