美文网首页
SQL 生成器,避免重复编码工作

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

作者: rrsunhome | 来源:发表于2021-11-11 23:34 被阅读0次

    Sql-Generate

    项目介绍

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

    背景

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

    Features

    • 支持excel、csv、txt(普通文件) 多种文件解析格式

    • 支持文件解析配置、内容过滤、内容转换

    • 支持数据格式化配置

    • 支持console、file等多种视图展示

    • 解析器、视图展示支持可扩展

    架构

    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

    • titleRowIndex 默认值: 0 标题行下标
    • rowRange 默认值: 全部数据 行数据范围
    • cellName 默认值: 空 列标题
    • cellNum 默认值: 空 列下标
    • CellFilter 默认值: TrueCellFilter 当前列是否过滤,又一列不符合当前行则跳过
    • CellConverter 默认值: ObjectToStringCellConverter 列内容转换器

    文本解析配置

    TextParserConfig

    • delimiter 默认值: \t 数据分隔符

    Excel 解析配置

    ExcelParserConfig

    • sheetIndex 默认值: 0 sheet 下标
    • sheetName 默认值: 空 sheet 名称

    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

    • sql 默认值: 空 sql 模版
    • parameterIndexMapping 默认值:空 参数下标与文件 cell 下标映射
    • Formatter 默认值: com.github.rrsunhome.excelsql.format.MessageFormatter sql 格式化
      • com.github.rrsunhome.excelsql.format.MessageFormatter
      • com.github.rrsunhome.excelsql.format.StringFormatter

    配置演示

            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

    相关文章

      网友评论

          本文标题:SQL 生成器,避免重复编码工作

          本文链接:https://www.haomeiwen.com/subject/hwnhrktx.html