使用Druid查出SQL中所有的表名并为所有表名添加后缀

使用Druid查出SQL中所有的表名并为所有表名添加后缀

例子是给所有的表名前增加模式名

1.ExportTableAliasVisitorForGP

/**
 * 继承不同数据库类型的ASTVisitorAdapter 重写visit方法 即可修改表名
 */
public class ExportTableAliasVisitorForGP extends PGASTVisitorAdapter {

    //默认是没有自定义变量的 可以自己加
    private String schema;

    public String getSchema() {
        return schema;
    }

    public ExportTableAliasVisitorForGP() {
    }

    public ExportTableAliasVisitorForGP(String schema) {
        this.schema = schema;
    }

    @Override
    public boolean visit(SQLExprTableSource x) {
        String name = x.getExpr().toString();
        x.setExpr(schema+"."+name);
        return true;
    }
}

2.使用方式

List<SQLStatement> stmtList = SQLUtils.parseStatements(content, JdbcConstants.POSTGRESQL);
ExportTableAliasVisitorForGP visitor = new ExportTableAliasVisitorForGP("public");
for (SQLStatement stmt : stmtList) {
     stmt.accept(visitor);
}
result = SQLUtils.toSQLString(stmtList, JdbcConstants.POSTGRESQL);

你可能感兴趣的:(java,其他,sql)