# SQL解析 **Repository Path**: DavinQI/sql-parsing ## Basic Information - **Project Name**: SQL解析 - **Description**: sql语法分析器,当输入一个复杂的sql查询语句(比如多个select嵌套或者内部多个join)时,它可以反馈给我某个查询字段来源于某个表或者几个表 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-10-30 - **Last Updated**: 2023-10-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # SQL解析 #### 介绍 sql语法分析器,当输入一个复杂的sql查询语句(比如多个select嵌套或者内部多个join)时,它可以反馈给我某个查询字段来源于某个表或者几个表 #### 软件架构 Springboot #### 安装教程 1. git 后可直接启动使用 #### 使用说明 1. 调用接口:http://localhost:9999/sqlParsing/create/DB2?sql=SQL语句 2. 调用接口解析复杂SQL:http://localhost:9999/sqlParsing/analysisSql/DB2?sql=复杂SQL语句 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ### 例子: 查询脚本: ``` select t1.col1, t1.col3, t3.colm , t2.col4 from aa.t t1 join bb.tt t2 on t1.col3 = t2.col2 join ( select t4.col2 colm from cc.ttt t4 where a = a) t3 on t1.col1 = t3.col2 where t1.col4 = 0 ``` 返回json对象 ``` { "success": true, "message": "success", "detailedMessage": null, "code": 200, "timestamp": 1665735946440, "result": { "columns": [ { "schema": "aa", "expression": "t1.col1", "type": "", "columnAlias": "", "table": "t", "columnName": "COL1" }, { "schema": "aa", "expression": "t1.col3", "type": "", "columnAlias": "", "table": "t", "columnName": "COL3" }, { "schema": "cc", "expression": "t3.colm", "type": "", "columnAlias": "", "table": "ttt", "columnName": "COL2" }, { "schema": "bb", "expression": "t2.col4", "type": "", "columnAlias": "", "table": "tt", "columnName": "COL4" } ] } } ``` 如建表脚本: ``` CREATE TABLE "FNC"."ACT_FIELD_MAP" ( "MAPID" VARCHAR(32) NOT NULL , "MENUID" VARCHAR(32) NOT NULL , "BUTTONID" VARCHAR(32) NOT NULL , "FIELDNAME" VARCHAR(32) NOT NULL , "DESCRIPT" VARCHAR(128) , "MAPTYPE" VARCHAR(32) , "SOURCE" VARCHAR(32) , "FIELDDATA" VARCHAR(32) , "FIELDTYPE" VARCHAR(32) , "INPUTHTML" LONG ) IN "AMS_DATA_4K" INDEX IN "AMS_IDX_4K" ; ``` 返回json对象 ``` { "success": true, "message": "success", "detailedMessage": null, "code": 200, "timestamp": 1642582925041, "result": { "columns": [ { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "isNull": "N", "columnChName": "", "columnName": "MAPID", "order": 1 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "isNull": "N", "columnChName": "", "columnName": "MENUID", "order": 2 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "isNull": "N", "columnChName": "", "columnName": "BUTTONID", "order": 3 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "isNull": "N", "columnChName": "", "columnName": "FIELDNAME", "order": 4 }, { "defaultValue": "", "dataLength": "128", "dataType": "VARCHAR", "dataPrecision": "", "columnChName": "", "columnName": "DESCRIPT", "order": 5 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "columnChName": "", "columnName": "MAPTYPE", "order": 6 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "columnChName": "", "columnName": "SOURCE", "order": 7 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "columnChName": "", "columnName": "FIELDDATA", "order": 8 }, { "defaultValue": "", "dataLength": "32", "dataType": "VARCHAR", "dataPrecision": "", "columnChName": "", "columnName": "FIELDTYPE", "order": 9 }, { "defaultValue": "", "dataLength": "", "dataType": "LONG", "dataPrecision": "", "columnChName": "", "columnName": "INPUTHTML", "order": 10 } ], "ddl": "CREATE TABLE \"FNC \".\"ACT_FIELD_MAP\" (\r\n\t\t \"MAPID\" VARCHAR(32) NOT NULL ,\r\n\t\t \"MENUID\" VARCHAR(32) NOT NULL ,\r\n\t\t \"BUTTONID\" VARCHAR(32) NOT NULL ,\r\n\t\t \"FIELDNAME\" VARCHAR(32) NOT NULL ,\r\n\t\t \"DESCRIPT\" VARCHAR(128) ,\r\n\t\t \"MAPTYPE\" VARCHAR(32) ,\r\n\t\t \"SOURCE\" VARCHAR(32) ,\r\n\t\t \"FIELDDATA\" VARCHAR(32) ,\r\n\t\t \"FIELDTYPE\" VARCHAR(32) ,\r\n\t\t \"INPUTHTML\" LONG )\r\n\t\t IN \"AMS_DATA_4K\" INDEX IN \"AMS_IDX_4K\"\r\n\t\t ;\r\n", "tableName": "", "optionType": "0", "table": "ACT_FIELD_MAP" } } ``` **目前支持DB2,MYSQL,ORACLE,POSTGRE,SQLSERVER数据库, 支持的语法有select,create,alter,comment** #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)