-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathverificaSql.py
More file actions
112 lines (94 loc) · 4.76 KB
/
verificaSql.py
File metadata and controls
112 lines (94 loc) · 4.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import os
import datetime
import time
from variaveisIniciais import location_ini
dataDefault = str(datetime.datetime.date(datetime.datetime.now()))
dateTime = datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S')
def salvaDados(user,tabela, data, tipo):
if(tipo == 'primeiraLeitura'):
arquivo = 'queries_resultado_' + dataDefault + '.txt'
else:
arquivo = 'queries_resultado_final_' + dataDefault + '.txt'
with open(arquivo, mode='a') as file:
linha = user + '|' + tabela + '|' + data
if(tipo == 'primeiraLeitura'):
file.write(linha+'\n')
else:
file.write(linha)
def limpaDados(user,tabela, data):
nmTabela = tabela.strip()
if(nmTabela[-2:] == r'\N'):
nmTabela = tabela[:-2]
if(nmTabela[-1:] == ';'):
nmTabela = tabela[:-1]
if(nmTabela[-1:] == ','):
nmTabela = tabela[:-1]
if(nmTabela[-1:] == ')'):
nmTabela = tabela[:-1]
if(nmTabela != '(SELECT'):
salvaDados(user, nmTabela, data, 'limpeza')
def main():
print('###########################################################################')
print('INICIO DA VERIFICACAO DOs SQLs...........................' + dateTime)
print('###########################################################################')
with open(location_ini) as f:
all_lines = f.readlines()
numlin = 1
for line in all_lines:
vSql = line.upper()
##########################################################################################################
####### VERIFICA O SQL POSSUI ALGUM 'FROM' E REALIZA UM SPLIT
##########################################################################################################
if(vSql.find('FROM') != -1):
sqlSplit = vSql.split() #ATENCAO COM O SPLIT *************************************************
for parse in range(0,len(sqlSplit)):
if(sqlSplit[parse] == 'FROM'):
##########################################################################################################
################### VERIFICA SE HA MAIS DE UMA TABELA DECLARADA NO FROM
##########################################################################################################
if(sqlSplit[parse+1][-1:] == ','):
for pasert in range(parse+1,len(sqlSplit)): # "loopa"da primeira tabela ate o WHERE
if(sqlSplit[pasert] == 'WHERE'):
break # para ao encontrar a clausula WHERE
else:
table = sqlSplit[pasert].strip()
#print(numlin, '-----',table)
salvaDados('userT', table, dataDefault,'primeiraLeitura')
else:
table = sqlSplit[parse+1].strip() # apenas captura a tabela do from caso acima seja falso
#print(numlin, '-----',table)
salvaDados('userT', table, dataDefault,'primeiraLeitura')
##########################################################################################################
############### VERIFICA SE HA DECLARADA A CLAUSULA JOIN E
##########################################################################################################
if(sqlSplit[parse] == 'JOIN'): # caso encontre a clausula JOIN e captura a tabela definida
table = sqlSplit[parse+1].strip()
#print(numlin, '-----',table)
salvaDados('userT', table, dataDefault,'primeiraLeitura')
numlin +=1
print('###########################################################################')
print('FIM VERIFICACAO SQLs.....................................' + dateTime)
print('###########################################################################')
time.sleep(5)
print('###########################################################################')
print('INICIO DA LIMPEZA........................................' + dateTime)
print('###########################################################################')
arquivo = 'queries_resultado_' + dataDefault + '.txt'
with open(arquivo, mode='r') as fileopen:
linha_limpeza = fileopen.readlines()
for linha in linha_limpeza:
vUserLimpeza = linha.split('|')[0]
vTabelaLimpeza = linha.split('|')[1]
vDataLimpeza = linha.split('|')[2]
#if(vTabelaLimpeza.strip())
limpaDados(vUserLimpeza, vTabelaLimpeza, vDataLimpeza)
print('###########################################################################')
print('FIM DA LIMPEZA...........................................' + dateTime)
print('###########################################################################')
print('REMOVENDO ARQUIVO INTERMEDIARIO..........................' + dateTime)
os.remove(arquivo)
time.sleep(5)
print('###########################################################################')
print('CRIADO ARQUIVO: queries_resultado_final_' + dataDefault + '.txt')
print('###########################################################################')
if __name__ == '__main__':main()