Ich habe gerade begonnen, JSqlparser zu erkunden. Nach meinem Verständnis habe ich den TablesNamesFinder modifiziert, um Spalten und Tabellen zu extrahieren, und es funktioniert gut, aber ein sehr kleines Problem.JSqlParser - Abrufen des Tabellennamens von Spalte
@Override
public void visit(Column col) {
Column c = col;
String cname = c.getFullyQualifiedName();
Table t = c.getTable();
System.out.println(t.getName());
}
Dieser pflegt Drucktisch, für den meisten Fällen druckt es null und für sehr wenige Fälle, druckt er Alias der Tabelle, aber nicht die Tabelle. Gibt es etwas, was ich vergesse?
Erholung der Besuche
@Override
public void visit(SelectExpressionItem exp){
exp.getExpression().accept(this);
}
@Override
public void visit(Table tableName) {
// System.out.println(tableName.getFullyQualifiedName());
}
@Override
public void visit(Select select) {
select.getSelectBody().accept(this);
}
und für Aggregatfunktionen wie sum (col1 * col2), kann ich diese in Funktionen besuchen, gibt es einen besseren Weg? Kann ich mehr Informationen über die Namen der Teile haben, die Sie zur Abfrage angegeben haben? Wie: Wählen Sie (Spalte1, Spalte2, Spalte3,) hier Spalte1, Spalte2, Spalte3 sind Auswahl Körper. Kann ich ein Wiki haben? – Waleed
Ich bin mir nicht sicher, was du meinst? Meinst du Kontext? Wie welche Spalte in welchem Konstrukt (z. B. welche Funktion)? Der Kontext ist von dem Syntaxbaum ableitbar. Den Besucher wie Sie zu benutzen, ist in Ordnung. – wumpz