J'essaie d'utiliser le pyparsing (lib) pour analyser et récupérer toutes les tables/vues utilisées dans les instructions SQL. Et j'essaie d'utiliser le code select_parser.py disponible avec cette librairie pyprasing.pyparsing pour les sqls complexes
J'ai besoin d'aide pour comprendre les modifications que je dois apporter au code select_parser.py pour obtenir la sortie mentionnée ci-dessous.
Je veux analyser la requête ci-dessous et obtenir toutes les tables utilisées à partir de la chaîne.
Select
Col 1,
Col 2
Col3,
(select top 1 name from tableX) as Col4,
col5
from
table1 a
left join table2 b on a.id = b.id
right join table3 c on a.id = c.id
left join
(select id from table4) as d
on c.id = d.id
Sortie prévue
TABLEx, table1, table2, table3, table4
Ok, j'ai essayé de définir le schéma optionnel et utilisé comme ci-dessous 'single_source = ((bdd ("base de données") + ». "+ schema_name (" schéma ") +" "+ nom_table (" table ") | \t \t \t \t \t \t schema_name. (" schéma ") +" "+ nom_table (" table ") | nom_table (". Table »)) \t \t \t \t \t + en option (en option (AS) + table_alias ("table_alias")) + en option (Répertorié + BY + index_name ("name") | NOT + INDEXE) ("index") | (LPAR + select_stmt + RPAR + Facultatif (Facultatif (AS) + table_alias)) | (LPAR + join_source + RPAR)) 'encore je suis en train de déterminer les jointures seules. –
Veuillez mettre ces fragments de code dans le corps de la question, PAS dans les commentaires. Ils sont plus faciles à lire et ne déclenchent pas les alarmes de «SO longs commentaires ne sont pas souhaitables». – PaulMcG
Salut Paul, pouvez-vous s'il vous plaît m'aider à comprendre ce que les changements que je dois apporter au code obtiennent la sortie attendue. J'ai modifié la question avec un exemple plus clair. –