Package Exports
- dt-sql-parser
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (dt-sql-parser) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
dt-sql-parser
本项目用于处理sql,目前含有功能
- 解析sql生成语法树(不支持CREATE等语句,具体可以查看
core/astParser
文件),支持单条sql语句 - 去除sql中的的注释(目前支持
--
,/**/
类型注释) - sql分割,根据
;
将sql分割为数组 - 校验sql,hive sql等语法,并给予错误信息与建议提示
用法
过滤注释 / sql分割
const dtFilter=require("dt-sql-parser").filter;
const sql=`
/*sttttttttart*/create table /*hhhhhhhh
hhhhhh
aaaaaa*/ sql_task_comment_test(id int comment 'id') comment 'sql test';
--eeeeeeeend
`
console.log(dtFilter.filterComments(sql))//过滤注释
console.log(dtFilter.splitSql(sql));//分割sql
生成ast树
const dtFilter=require("dt-sql-parser").parser;
const sql=`
/*sttttttttart*/select userId as id,name /*hhhhhhhh
hhhhhh
aaaaaa*/ from user where isDeleted=0
--eeeeeeeend
`
console.log(dtFilter.parse(sql))//注意,目前只支持单条sql语句,所以需要自己调用sql分割一条一条处理!
校验hive sql语法
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
}
*/