Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Python-Parsing einer SQL mit pyparsing

Dieser Parser wurde vor langer Zeit geschrieben, und der Umgang mit mehreren Werten in einem Ergebnisnamen kam erst später auf.

Ändern Sie diese Zeile in dem von Ihnen zitierten Parser:

single_source = ( (Group(database_name("database") + "." + table_name("table")) | table_name("table")) + 

zu

single_source = ( (Group(database_name("database") + "." + table_name("table*")) | table_name("table*")) + 

Wenn ich Ihre Beispielanweisung durch den select_stmt-Parser laufen lasse, erhalte ich jetzt Folgendes:

select * from xyz  inner join dhf  on df = hfj  where z > 100
['SELECT', ['*'], 'FROM', 'xyz', 'INNER', 'JOIN', 'dhf', 'ON', ['df', '=', 'hfj'], 'WHERE', ['z', '>', '100']]
- columns: ['*']
- table: [['xyz'], ['dhf']]
  [0]:
    ['xyz']
  [1]:
    ['dhf']
- where_expr: ['z', '>', '100']