Beantwortung meiner Frage:
Am jsqlparser mit http://jsqlparser.sourceforge.net/
Diese individuellen Aussagen analysiert, nicht mehr Anweisungen wie in einem Schema gefunden. Also spalte das Schema auf ';' Es mag auch nicht den '' 'Charakter, also müssen diese entfernt werden. Code zu Spaltennamen für eine bestimmte Tabelle zu erhalten:
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);
}
}
}
Je nachdem, was Sie es brauchen für eine Art und Weise sein, kann es in ziemlich einfache Art und Weise zu tun. Was wird die Anwendung davon sein? Sonst werfen Sie einen Blick auf http://stackoverflow.com/questions/660609/sql-parser-library-for-java – bobah
@bobah - ok ja http://stackoverflow.com/questions/660609/sql-parser- Bibliothek-für-Java hat die Antwort - jsqlparser. Danke, –