05c5b87d045fe63b71df81ff91bb7fd091f15b14
				
			
			
		
	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
}
*/
Description
				
					Languages
				
				
								
								
									TypeScript
								
								91.9%
							
						
							
								
								
									ANTLR
								
								7.9%
							
						
							
								
								
									JavaScript
								
								0.2%