本文概览:在需要解析sql获取一些信息的时候,比如解析sql中表名。此时,可以使用Druid中源码中已有模块来实现。
1 获取sql表名
在一些场景中,我们需要获取sql的表名。可以通过如下代码获取
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public class SqlParserUtil { public static void main(String[] args) { final String dbType = JdbcConstants.MYSQL; // 可以是ORACLE、POSTGRESQL、SQLSERVER、ODPS等 String sql = "insert into xx(name,score) values('mm','22')"; List<SQLStatement> stmtList = SQLUtils.parseStatements(sql, dbType); if(stmtList.size()>1){ throw new RuntimeException("sql statement size > 0"); } SQLStatement statement = stmtList.get(0); MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor(); statement.accept(visitor); System.out.printf("tableName:"+visitor.getCurrentTable()); } } |