//wpackage com.alibaba.otter.canal.client.adapter.rdb.test; // //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; // //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()); // } //}