java 解析并提取执行的sql语句中的表名
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
1.添加maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.2.3</version>
</dependency>
2.编写测试代码
public static void main(String[] args) {
String sql = "select * from bbl.source";
//格式化输出
String result = SQLUtils.format(sql, JdbcConstants.MYSQL);
System.out.println(result); // 缺省大写格式
List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, JdbcConstants.MYSQL);
//解析出的独立语句的个数
System.out.println("size is:" + stmtList.size());
for (int i = 0; i < stmtList.size(); i++) {
SQLStatement stmt = stmtList.get(i);
MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
stmt.accept(visitor);
//获取表名称
Set<TableStat.Name> tableNames = visitor.getTables().keySet();
for (TableStat.Name tableName: tableNames) {
String tn = tableName.getName();
if(tn.contains(".")){
String[] split = tn.split("\\.");
System.out.println("table name is "+split[1]);
}else{
System.out.println("table name is "+tn);
}
}
}
}
3.结果展示
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |