jsqlparser是sql语句解析工具,可以解析sql并分析语法。
安装
<dependency>
<groupId>com.github.jsqlparser</groupId>
<artifactId>jsqlparser</artifactId>
<version>4.3</version>
</dependency>
使用
String s = """
CREATE TABLE `abc` (
`abc1` int NOT NULL AUTO_INCREMENT,
`abc2` varchar(255) DEFAULT NULL COMMENT 'comment',
`abc3` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT 'comment2',
UNIQUE KEY `abc1` (`abc1`),
KEY `abc2` (`abc2`),
KEY `abc3` (`abc3`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb""";
Statement parse = CCJSqlParserUtil.parse(s);
if (parse instanceof CreateTable t) {
System.out.println(parse);
}
}
通过parse方法即可发现:
一些细节:
- 不支持 # 语法,而只支持 – 对ssql的注释。
如果使用#会提示#无法解析 - 索引必须有名称,如果是没名称的索引会抛出 匹配到异常的(
- 能够获取mysql数据类型,但是是会带varchar(255)的长度类型信息
- 索引信息和列信息不在一个结构里面