SqlParserTest.java 4.0 KB
Newer Older
M
modify  
mcy 已提交
1 2
//wpackage com.alibaba.otter.canal.client.adapter.rdb.test;
//
温绍锦 已提交
3 4 5 6 7 8 9 10 11
//import com.alibaba.druid.sql.ast.SQLName;
//import com.alibaba.druid.sql.ast.SQLStatement;
//import com.alibaba.druid.sql.ast.statement.SQLCreateTableStatement;
//import com.alibaba.druid.sql.ast.statement.SQLExprTableSource;
//import com.alibaba.druid.sql.dialect.mysql.parser.MySqlCreateTableParser;
//import com.alibaba.druid.sql.dialect.mysql.parser.MySqlStatementParser;
//import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlOutputVisitor;
//import com.alibaba.druid.sql.dialect.mysql.visitor.MySqlSchemaStatVisitor;
//import com.alibaba.druid.sql.parser.SQLStatementParser;
M
modify  
mcy 已提交
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
//
//import java.io.StringWriter;
//
//public class SqlParserTest {
//
//    public static class TableNameVisitor extends MySqlOutputVisitor {
//
//        public TableNameVisitor(Appendable appender){
//            super(appender);
//        }
//
//        @Override
//        public boolean visit(SQLExprTableSource x) {
//            SQLName table = (SQLName) x.getExpr();
//            String tableName = table.getSimpleName();
//
//            // 改写tableName
//            print0("new_" + tableName.toUpperCase());
//
//            return true;
//        }
//
//    }
//
//    public static void main(String[] args) {
//        // String sql = "select * from `mytest`.`t` where id=1 and name=ming group by
//        // uid limit 1,200 order by ctime";
//
//        String sql = "CREATE TABLE `mytest`.`user` (\n" + "  `id` bigint(20) NOT NULL AUTO_INCREMENT,\n"
//                     + "  `name` varchar(30) NOT NULL,\n" + "  `c_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,\n"
//                     + "  `role_id` bigint(20) DEFAULT NULL,\n" + "  `test1` text,\n" + "  `test2` blob,\n"
//                     + "  `key` varchar(30) DEFAULT NULL,\n" + "  PRIMARY KEY (`id`)\n"
//                     + ") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;";
//
//        // // 新建 MySQL Parser
//        // SQLStatementParser parser = new MySqlStatementParser(sql);
//        //
//        // // 使用Parser解析生成AST,这里SQLStatement就是AST
//        // SQLStatement sqlStatement = parser.parseStatement();
//        //
//        // MySqlSchemaStatVisitor visitor = new MySqlSchemaStatVisitor();
//        // sqlStatement.accept(visitor);
//        //
//        // System.out.println("getTables:" + visitor.getTables());
//        // System.out.println("getParameters:" + visitor.getParameters());
//        // System.out.println("getOrderByColumns:" + visitor.getOrderByColumns());
//        // System.out.println("getGroupByColumns:" + visitor.getGroupByColumns());
//        // System.out.println("---------------------------------------------------------------------------");
//        //
//        // // 使用select访问者进行select的关键信息打印
//        // // SelectPrintVisitor selectPrintVisitor = new SelectPrintVisitor();
//        // // sqlStatement.accept(selectPrintVisitor);
//        //
//        // System.out.println("---------------------------------------------------------------------------");
//        // // 最终sql输出
//        // StringWriter out = new StringWriter();
//        // TableNameVisitor outputVisitor = new TableNameVisitor(out);
//        // sqlStatement.accept(outputVisitor);
//        // System.out.println(out.toString());
//
//        MySqlCreateTableParser parser1 = new MySqlCreateTableParser(sql);
//        SQLCreateTableStatement createTableStatement = parser1.parseCreateTable();
////        MySqlSchemaStatVisitor visitor1 = new MySqlSchemaStatVisitor();
////        createTableStatement.accept(visitor1);
//        // visitor1.getTables().forEach((k, v) -> {
//        // System.out.println(k.);
//        // System.out.println(v);
//        // });
//        // 最终sql输出
//        StringWriter out = new StringWriter();
//        TableNameVisitor outputVisitor = new TableNameVisitor(out);
//        createTableStatement.accept(outputVisitor);
//        System.out.println(out.toString());
//    }
//}