Gibt es irgendeine Bibliothek (vorzugsweise in Python), die SQL-Abfragen parsen kann (die PostgreSQL-Art), und mir eine strukturierte Darstellung von ihnen geben? Es gibt sqlparse, aber das erlaubt mir nicht, die Tabelle, die eine Abfrage verwendet, einfach herauszufinden (sagen). Ich brauche nur Unterstützung für SELECT
Abfragen, aber einige von ihnen können sehr komplex sein.SQL in ein hierarchisches Ergebnis analysieren, um es zu analysieren
-2
A
Antwort
2
Das Beispiel select_parser.py, das mit pyparsing geliefert wird, gibt Ihnen eine ParseResults-Datenstruktur der Anweisung. Hier sind die eingebetteten Testfälle:
select * from xyzzy where z > 100
select * from xyzzy where z > 100 order by zz
select * from xyzzy
select z.* from xyzzy
select a, b from test_table where 1=1 and b='yes'
select a, b from test_table where 1=1 and b in (select bb from foo)
select z.a, b from test_table where 1=1 and b in (select bb from foo)
select z.a, b from test_table where 1=1 and b in (select bb from foo) order by b,c desc,d
select z.a, b from test_table left join test2_table where 1=1 and b in (select bb from foo)
select a, db.table.b as BBB from db.table where 1=1 and BBB='yes'
select a, db.table.b as BBB from test_table,db.table where 1=1 and BBB='yes'
select a, db.table.b as BBB from test_table,db.table where 1=1 and BBB='yes' limit 50
Die Ergebnisse gliedert sich in verschiedene Komponenten des Eingangsrechnung, und die genannten Felder kann zugegriffen werden, wie Objektattribute (result.table
: 'XYZZY'
, result.where_expr
: ['z', '>', '100']
, etc.). Hier sind die Ergebnisse aus den ersten drei Tests:
select * from xyzzy where z > 100
['SELECT', ['*'], 'FROM', 'xyzzy', 'WHERE', ['z', '>', '100']]
- columns: ['*']
- from: ['xyzzy']
- table: ['xyzzy']
- where_expr: ['z', '>', '100']
select * from xyzzy where z > 100 order by zz
['SELECT', ['*'], 'FROM', 'xyzzy', 'WHERE', ['z', '>', '100'], 'ORDER', 'BY', [['zz']]]
- columns: ['*']
- from: ['xyzzy']
- order_by_terms: [['zz']]
[0]:
['zz']
- order_key: zz
- table: ['xyzzy']
- where_expr: ['z', '>', '100']
select * from xyzzy
['SELECT', ['*'], 'FROM', 'xyzzy']
- columns: ['*']
- from: ['xyzzy']
- table: ['xyzzy']
Es wurde für SQLite auf den SQL-Dialekt geschrieben, aber auf Postgres Anpassung sollte nicht zu schrecklich sein.
Verwandte Themen
- 1. Wie sql Ergebnis analysieren?
- 2. Analysieren einer Variablen in SQL Ergebnis
- 3. SQL, um Daten nach der Migration zu analysieren
- 4. Wie Dynamodb Ergebnis zu einer Ganzzahl analysieren?
- 5. C# Klasse zu analysieren JSON Ergebnis
- 6. ein Bedarf Dateinamen zu analysieren
- 7. SQL mit Python analysieren
- 8. Analysieren SQL-Zeichenfolge
- 9. Regex, um Bildlink in Markdown zu analysieren
- 10. SQL Server Zeichenfolge analysieren
- 11. SQL - Analysieren einer Abfrage
- 12. Richtiger Weg, um ein xsd: date zu LocalDate zu analysieren
- 13. Wie PHP Gleichung drucken, um es zu analysieren?
- 14. mit CTAKES, um klinische Dokumente zu analysieren
- 15. iOS - Hosting-JSON-Datei, um es mit URL zu analysieren
- 16. JSON-Ergebnis von Google Places API analysieren
- 17. Verwenden von Jsoup, um HTML zu analysieren?
- 18. Wie Regex verwenden, um Links zu analysieren
- 19. wie grep zu verwenden, um Spalten in CSV zu analysieren,
- 20. Hochladen von Blob-Datei, um es zu analysieren und Zeilen in SQL Azur einfügen
- 21. NSString analysieren, um Datum zu finden
- 22. wie JSON-Ergebnis ohne Array-Namen in Android zu analysieren
- 23. Ist es möglich, ein Stylesheet mit Nokogiri zu analysieren?
- 24. Regex, um lange Wörter zu analysieren
- 25. TinyXML: wie ein Dateizeiger zu analysieren
- 26. ein Objekt um Javascript-json-Format Verpackung, wie Winkel, um es zu analysieren
- 27. Verwenden jq ein JSON-String zu analysieren
- 28. Wie zu analysieren BaseHTTPRequestHandler.path
- 29. Datumsformat so seltsam, wie zu analysieren es
- 30. JSON-Ergebnis vom Knoten oracledb analysieren
Können Sie Beispiele geben, wonach Sie fragen? –