gajoseph / purge

Purge data from db based on datafield(createdDate/ lastupdatedate)
GNU General Public License v3.0
1 stars 0 forks source link

parsing sql #9

Open gajoseph opened 2 years ago

gajoseph commented 2 years ago

given a select stat need to parse that into columns dictionary/ array and tab dictionary/ array @Abhilash Menon @Manoj Abraham , @jiju john , @Jason Jacob


 select
      b.mygirl, replace(colname, '\n','') as N_col_name,parent_qvd, c.myboy,
      case when not startswith(MDM_QVD_COLS, '//') then 
              case  when (contains(MDM_QVD_COLS, replace(colname, '\n','')) or
                          contains(MDM_QVD_COLS, replace(colname, '\n','')) )   then
                    // check if it partial 
                    case when charindex(replace(colname, '\n',''), MDM_QVD_COLS) >1 then 
                        case when Ascii(substring( MDM_QVD_COLS, charindex(replace(colname, '\n',''), MDM_QVD_COLS)-1, 1)) in (10,32,44,40,41) 
                            and ascii(substring( MDM_QVD_COLS, charindex(   replace(colname, '\n',''), MDM_QVD_COLS ) + len(replace(colname, '\n','')), 1) )in (10,32,44,40,41)
                            then '2'
                        else '1.5'
                        end 
                    else // FWD moving
                        case when ascii(substring( MDM_QVD_COLS, charindex(   replace(colname, '\n',''), MDM_QVD_COLS ) + len(replace(colname, '\n','')), 1) )in (10,32,44,40,41)  then 2
                        else '1.5' end 
                    end

                else 

                '0' end
        else  'C' as present 

From qlik_app_qvd_flds c 
        join QVD_tab_columns b on lower(b.qvd_name) = lower(c.mdm_qvd_name)

expected columsn dict = {b.mygirl, replace(colname, '\n','') as N_col_name, c.myboy, case.... end as present} tabs = {qlik_app_qvd_fld,QVD_tab_columns }

gajoseph commented 2 years ago

Please review the code :: https://github.com/gajoseph/purge/blob/master/sqlparse