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);
    }

生成后的文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值