Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

जावा में एक MySQL स्कीमा पार्सर?

मेरे अपने प्रश्न का उत्तर देना:

मैं jsqlparser का उपयोग कर रहा हूँ http://jsqlparser.sourceforge.net/

यह अलग-अलग बयानों को पार्स करता है, न कि कई बयानों जैसे कि एक स्कीमा में पाया जाता है। तो स्कीमा को ';' पर विभाजित करें। यह '`' चरित्र को भी पसंद नहीं करता है, इसलिए इन्हें हटा दिया जाना चाहिए। किसी विशेष तालिका के लिए कॉलम नाम प्राप्त करने के लिए कोड:

public class BUDataColumnsFinder {

public static String[] readSql(String schema) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(schema)));
    String mysql = "";
    String line;
    while ((line = br.readLine()) != null) {
        mysql = mysql + line;
    }
    br.close();
    mysql = mysql.replaceAll("`", "");
    return mysql.split(";");
}

public static List<String> getColumnNames(String tableName, String schemaFile) throws JSQLParserException, IOException {

    CCJSqlParserManager pm = new CCJSqlParserManager();
    List<String> columnNames = new ArrayList<String>();

    String[] sqlStatements = readSql(schemaFile);

    for (String sqlStatement : sqlStatements) {

        Statement statement = pm.parse(new StringReader(sqlStatement));

        if (statement instanceof CreateTable) {

            CreateTable create = (CreateTable) statement;
            String name = create.getTable().getName();

            if (name.equalsIgnoreCase(tableName)) {
                List<ColumnDefinition> columns = create.getColumnDefinitions();
                for (ColumnDefinition def : columns) {
                    columnNames.add(def.getColumnName());
                }
                break;
            }
        }
    }

    return columnNames;
}


public static void main(String[] args) throws Exception {

    String schemaFile = "/home/john/config/bu-schema.sql";

    String tableName = "records";

    List<String> columnNames = BUDataColumnsFinder.getColumnNames(tableName, schemaFile);

    for (String name : columnNames) {
        System.out.println("name: " + name);
    }

}

}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL के साथ SQL क्वेरी

  2. ग्राहकों द्वारा एक साथ खरीदे गए उत्पादों को ढूंढना

  3. PHP और MySql जांचें कि क्या तालिका खाली है

  4. Yii CDbCriteria में mysql सबक्वेरी को कैसे बदलें?

  5. mysql - पंक्तियों बनाम कॉलम प्रदर्शन बनाना