Mysql
 sql >> база данни >  >> RDS >> Mysql

Анализатор на MySQL схема в Java?

Отговарям на собствения си въпрос:

Използвам 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 Cursor - Създаване на процедура

  2. Грешка с неизвестна колона в „списък с полета“ при заявка за актуализиране на MySQL

  3. Въведение във Firebase

  4. Chart.js - Получаване на данни от база данни с помощта на mysql и php

  5. Подобряване на ефективността на MySQL индекса – колони в множество индекси?