Go to file
2020-12-17 16:35:49 +08:00
.github Update issue templates 2020-04-26 17:36:06 +08:00
build fix: restore antlr4 config 2020-12-14 11:09:57 +08:00
docs docs: update tasks status 2020-09-17 20:53:56 +08:00
src modify sparkSql grammar 2020-12-17 16:35:49 +08:00
test modify sparkSql grammar 2020-12-17 16:35:49 +08:00
.eslintrc.js build: optimize cli and add eslint 2020-08-28 13:29:47 +08:00
.gitignore chore: ingore 2020-09-17 20:54:16 +08:00
.npmignore feat: add generic and plsql basic parser file 2020-09-11 17:39:10 +08:00
CONTRIBUTING.md feat: add generic and plsql basic parser file 2020-09-11 17:39:10 +08:00
jest.config.js feat: add generic and plsql basic parser file 2020-09-11 17:39:10 +08:00
NeREADME.md feat: add generic and plsql basic parser file 2020-09-11 17:39:10 +08:00
package.json build: update parser lib 2020-09-11 18:47:53 +08:00
README.md build: optimize cli and add eslint 2020-08-28 13:29:47 +08:00
tsconfig.json build: update parser lib 2020-09-11 18:47:53 +08:00
yarn.lock build: optimize cli and add eslint 2020-08-28 13:29:47 +08:00

如果你只想单纯的解析(SQL/SparkSQL),请使用 cuopyue

dt-sql-parser

NPM version

本项目用于处理SQL目前含有功能

  1. 校验SQLhive SQLimpala SQLflinkSQL 等语法,并给予错误信息与建议提示
  2. SQL分割,根据;将sql分割为数组
  3. 去除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

校验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
}
*/

API

filter

function filterComments(sql:string):string

过滤 sql 注释(支持/*--)

function splitSql(sql:string):Array

自动去除注释,并且提取出各个 sql

parser

function parseSyntax(sql:string|Array, type?:string):Object|boolean

校验 sql 语法,如果没错误,则返回 false,否则返回错误详细信息

可以提供一个含有两个字符串的数组,代表被光标分割的两个 sql片段

function parserSql(sql:string|Array, type?:string):Object

解析 sql 语法,根据上下文提示补全字段与其它辅助信息

可以提供一个含有两个字符串的数组代表被光标分割的两个sql片段

flinksqlParser

function flinksqlParser (sql: sql): SyntaxError

校验 flinksql 语法。

本项目文档不是很详细,也不准确(暂时没精力写),项目功能可以满足 hivesqlsqlimpalaflinksql 的语法检查和提示功能。 具体使用方式可以参照代码中的 ts 类型。


hiveimpala语法解析文件来自Hue


ChangeLog

  • 1.1.8 添加转义字符支持
  • 1.1.9 添加函数的中括号语法支持 split(nameList )
  • 1.2.0 添加 ts添加测试
  • 2.0.0 添加flinksql语法检查
  • 3.0.0 拆分hiveimpala集成最新 HUE 方案