SQL 生成器,避免重复编码工作

2021-11-11  本文已影响0人  rrsunhome

Sql-Generate

项目介绍

sql-generate 是一个基于java语言开发的项目,它是一个 SQL 生成类的项目,用于某些文件资源映射成对应的 SQL,提高开发效率

背景

在工作当中,会遇到上线前需要初始化数据或上线后线上数据不正确、数据需要清洗等,对于复杂的场景需要写脚本来支持,对于简单的场景往往是写 sql 人工执行,数据的来源往往是某个文件,通过文件解析成对应的 sql,时间一长,每次发生这种事情就会产生不必要的工作量,所以本项目把解析、生产对应的 sql,抽象成对应工具库,提高开发效率

Features

架构

image-1.png

集成方式

Maven:

<dependency>
  <groupId>com.github.rrsunhome</groupId>
  <artifactId>excelsql-generate</artifactId>
  <version>2.0.2</version>
</dependency>

Gradle:

implementation 'com.github.rrsunhome:excelsql-generate:2.0.2'

快速开始

加载普通文件资源

    Resource resource = new ClassPathResource("order.txt");

        TextParserConfig parserConfig = new TextParserConfig("\t");
        parserConfig.setRowRange(0,20);
        SqlFormatConfig sqlFormatConfig = new SqlFormatConfig("insert into table(a,b,c) values({0},{1},{2});")
                .setString(0, 0)
                .setString(1, 1)
                .setInt(2, 2);
        SqlGenerator csvSqlGenerator = new DefaultSqlGenerator(resource,
                parserConfig, sqlFormatConfig);
        ResultSet resultSet = csvSqlGenerator.execute();
        resultSet.outputView();

加载 Excel 资源

      Resource resource = new ClassPathResource("order-v1.xlsx");

        ExcelParserConfig parserConfig = new ExcelParserConfig();
        String sql = "insert into table(a,b,c) values({0},{1},{2});";
        SqlFormatConfig sqlFormatConfig = new SqlFormatConfig(sql)
                .setString(0, 1)
                .setString(1, 0)
                .setInt(2, 2);

        SqlGenerator csvSqlGenerator = new DefaultSqlGenerator(resource, parserConfig, sqlFormatConfig);
        ResultSet resultSet = csvSqlGenerator.execute();
        resultSet.outputView();

加载 Csv 资源

        Resource resource = new ClassPathResource("order.csv");
        ExcelParserConfig parserConfig = new ExcelParserConfig();
        parserConfig.setSheetIndex(0);
        SqlFormatConfig sqlFormatConfig = new SqlFormatConfig("insert into table(a,b,c) values({0},{1},{2});")
                .setString(0, 1)
                .setString(1, 0)
                .setInt(2, 2);
        SqlGenerator csvSqlGenerator = new DefaultSqlGenerator(resource, parserConfig, sqlFormatConfig);
        ResultSet resultSet = csvSqlGenerator.execute();
        resultSet.outputView();

属性配置

基本解析配置

BaseParserConfig

文本解析配置

TextParserConfig

Excel 解析配置

ExcelParserConfig

Csv 解析配置

CsvParserConfig

配置演示

        CsvParserConfig parserConfig = new CsvParserConfig();
        parserConfig.setTitleRowIndex(0);
        parserConfig.setRowRange(1, 30);
        parserConfig.addCellMapping(CellMapping.builder()
                .cellNum(1)
                .cellFilter(cellValue -> true)
                .cellConverter(Object::toString)
                .build());
        parserConfig.addCellMapping(CellMapping.builder()
                .cellNum(2)
                .cellFilter("21"::equals)
                .cellConverter(Object::toString)
                .build());
        parserConfig.addCellMapping(CellMapping.builder()
                .cellNum(0)
                .build());

SQL 格式化配置

SqlFormatConfig

配置演示

        SqlFormatConfig sqlFormatConfig = new SqlFormatConfig("insert into table(a,b,c) values({0},{1},{2});", new MessageFormatter())
                .setString(0, 1)
                .setString(1, 0)
                .setInt(2, 2);

项目地址

https://github.com/rrsunhome/excelsql-project

上一篇下一篇

猜你喜欢

热点阅读