Warning Project will be archived as read-only. This project still can be use, But there will be no update until unknown date announcement.
本项目用于处理sql,目前含有功能
- 校验sql,hive sql,impala sql等语法,并给予错误信息与建议提示
- sql分割,根据
;
将sql分割为数组 - 去除sql中的的注释(目前支持
--
,/**/
类型注释)
Requirement:
- typescript (for build .ts)
- browserify (for bundling to avoid requirejs)
- uglify-js (for minify)
npm install -g typescript
npm install -g browserify
npm install -g uglify-js
# build with output to lib
# update index.js and build bundle js
./bundling.sh
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
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注释(支持/*和--)
自动去除注释,并且提取出各个sql
校验sql语法,如果没错误,则返回false,否则返回错误详细信息
可以提供一个含有两个字符串的数组,代表被光标分割的两个sql片段
解析sql语法,根据上下文提示补全字段与其它辅助信息
可以提供一个含有两个字符串的数组,代表被光标分割的两个sql片段
ast生成代码来自nquery
hive,impala等语法解析文件来自Hue
- 1.1.8 添加转义字符支持
- 1.1.9 添加函数的中括号语法支持( split(nameList)[0] )