diff --git a/README.md b/README.md index 6780a28..21759d3 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ 1. 解析sql生成语法树(不支持CREATE等语句,具体可以查看`core/astParser`文件),支持单条sql语句 2. 去除sql中的的注释(目前支持`--`,`/**/`类型注释) 3. sql分割,根据`;`将sql分割为数组 +4. 校验sql,hive sql等语法,并给予错误信息与建议提示 ## 用法 @@ -35,4 +36,39 @@ aaaaaa*/ from user where isDeleted=0 console.log(dtFilter.parse(sql))//注意,目前只支持单条sql语句,所以需要自己调用sql分割一条一条处理! ``` -语法解析模块代码来自[nquery](http://github.com/alibaba/nquery/) \ No newline at end of file +### 校验hive sql语法 +``` javascript +const dtSqlParser=require("dt-sql-parser").parser; + +console.log(dtSqlParser.parseSyntax("selet * form",'','hive')); + +/* +{ + "text": "selet",//错误部分 + "token": "REGULAR_IDENTIFIER",//类型 + "line": 0, + "loc": {//错误位置信息 + "first_line": 1, + "last_line": 1, + "first_column": 0, + "last_column": 5 + }, + "ruleId": "0", + "expected": [//建议输入内容 + { + "text": "select",//建议内容 + "distance": 1//建议优先级 + }, + { + "text": "delete", + "distance": 2 + } + ], + "recoverable": false, + "incompleteStatement": true +} +*/ +``` + +sql语法解析模块代码来自[nquery](https://github.com/alibaba/nquery/) +hive语法解析模块代码来自[Hue](https://github.com/cloudera/hue) \ No newline at end of file diff --git a/test/index.js b/test/index.js index 647d295..212769b 100644 --- a/test/index.js +++ b/test/index.js @@ -6,8 +6,8 @@ for(let [key,value] of testMap){ console.log(`******${key}********`) console.log(value) console.log(`******result********`) - // console.log(dtSqlParser.parser.parse(value)); - console.log(dtSqlParser.filter.splitSql(value)) + console.log(dtSqlParser.parser.parseSyntax(value)); + // console.log(dtSqlParser.filter.splitSql(value)) console.log(`********************`) }