package com.alimama.mdrill.jdbc; import java.io.StringReader; import java.util.Arrays; import java.util.List; import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.parser.CCJSqlParserManager; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.statement.insert.Insert; import net.sf.jsqlparser.expression.*; import com.alimama.mdrill.json.JSONArray; import com.alimama.mdrill.json.JSONException; import com.alimama.mdrill.json.JSONObject; public class InsertParser { private String sql; public String tablename; public String[] fl; public String jsons; public static void main(String[] args) throws JSQLParserException, JSONException { InsertParser p=new InsertParser(); p.parse("INSERT INTO table_name (列1, 列2) VALUES ('111', '22') "); System.out.println(p.toString()); } public void parse(String sql) throws JSQLParserException, JSONException { this.sql=sql; CCJSqlParserManager parserManager = new CCJSqlParserManager(); Insert insert = (Insert) parserManager.parse(new StringReader(sql)); this.tablename=insert.getTable().getName(); fl=new String[insert.getColumns().size()]; for(int i=0;i<fl.length;i++) { fl[i]=((Column) insert.getColumns().get(i)).getColumnName(); } ExpressionList explist=((ExpressionList) insert.getItemsList()); JSONObject item=new JSONObject(); List expressions=explist.getExpressions(); for(int i=0;i<expressions.size();i++) { Object val=expressions.get(i); if(val instanceof StringValue) { StringValue vv=(StringValue)val; item.put(fl[i], String.valueOf(vv.getValue())); } if(val instanceof LongValue) { LongValue vv=(LongValue)val; item.put(fl[i], String.valueOf(vv.getValue())); } if(val instanceof DoubleValue) { DoubleValue vv=(DoubleValue)val; item.put(fl[i], String.valueOf(vv.getValue())); } } JSONArray list=new JSONArray(); list.put(item); this.jsons=list.toString(); } @Override public String toString() { return "InsertParser [sql=" + sql + ", tablename=" + tablename + ", fl=" + Arrays.toString(fl) + ", jsons=" + jsons + "]"; } }