-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupload_dados_tse.py
52 lines (48 loc) · 11.1 KB
/
upload_dados_tse.py
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
from conexao_local import engine
from recursive_folders import recursive_folders
import pandas as pd, re
class upload_dados_tse():
def __init__(self):
self.engine = engine
self.dicionario_colunas = {
'BENS_CANDIDATOS - 2006, 2008' : ['DT_GERACAO','HH_GERACAO','ANO_ELEICAO','DS_ELEICAO','SG_UF','SQ_CANDIDATO','CD_TIPO_BEM_CANDIDATO','DS_BEM_CANDIDATO','VR_BEM_CANDIDATO','DT_ULTIMA_ATUALIZACAO','HH_ULTIMA_ATUALIZACAO'],
'BENS_CANDIDATOS - 2010, 2012' : ['DT_GERACAO','HH_GERACAO','ANO_ELEICAO','DS_ELEICAO','SG_UF','SQ_CANDIDATO','CD_TIPO_BEM_CANDIDATO','DS_TIPO_BEM_CANDIDATO','DS_BEM_CANDIDATO','VR_BEM_CANDIDATO','DT_ULTIMA_ATUALIZACAO','HH_ULTIMA_ATUALIZACAO'],
'BENS_CANDIDATOS - 2014, 2016' : ['DT_GERACAO','HH_GERACAO','ANO_ELEICAO','CD_TIPO_ELEICAO','NM_TIPO_ELEICAO','CD_ELEICAO','DS_ELEICAO','DT_ELEICAO','SG_UF','SG_UE','NM_UE','SQ_CANDIDATO','NR_ORDEM_CANDIDATO','CD_TIPO_BEM_CANDIDATO','DS_TIPO_BEM_CANDIDATO','DS_BEM_CANDIDATO','VR_BEM_CANDIDATO','DT_ULTIMA_ATUALIZACAO','HH_ULTIMA_ATUALIZACAO'],
'CONSULTA_CAND':['DT_GERACAO', 'HH_GERACAO', 'ANO_ELEICAO', 'CD_TIPO_ELEICAO', 'NM_TIPO_ELEICAO', 'NR_TURNO', 'CD_ELEICAO', 'DS_ELEICAO', 'DT_ELEICAO', 'TP_ABRANGENCIA', 'SG_UF', 'SG_UE', 'NM_UE', 'CD_CARGO', 'DS_CARGO', 'SQ_CANDIDATO', 'NR_CANDIDATO', 'NM_CANDIDATO', 'NM_URNA_CANDIDATO', 'NM_SOCIAL_CANDIDATO', 'NR_CPF_CANDIDATO', 'NM_EMAIL', 'CD_SITUACAO_CANDIDATURA', 'DS_SITUACAO_CANDIDATURA', 'CD_DETALHE_SITUACAO_CAND', 'DS_DETALHE_SITUACAO_CAND', 'TP_AGREMIACAO', 'NR_PARTIDO', 'SG_PARTIDO', 'NM_PARTIDO', 'SQ_COLIGACAO', 'NM_COLIGACAO', 'DS_COMPOSICAO_COLIGACAO', 'CD_NACIONALIDADE', 'DS_NACIONALIDADE', 'SG_UF_NASCIMENTO', 'CD_MUNICIPIO_NASCIMENTO', 'NM_MUNICIPIO_NASCIMENTO', 'DT_NASCIMENTO', 'NR_IDADE_DATA_POSSE', 'NR_TITULO_ELEITORAL_CANDIDATO', 'CD_GENERO', 'DS_GENERO', 'CD_GRAU_INSTRUCAO', 'DS_GRAU_INSTRUCAO', 'CD_ESTADO_CIVIL', 'DS_ESTADO_CIVIL', 'CD_COR_RACA', 'DS_COR_RACA', 'CD_OCUPACAO', 'DS_OCUPACAO', 'NR_DESPESA_MAX_CAMPANHA', 'CD_SIT_TOT_TURNO', 'DS_SIT_TOT_TURNO', 'ST_REELEICAO', 'ST_DECLARAR_BENS', 'NR_PROTOCOLO_CANDIDATURA', 'NR_PROCESSO'],
'CONSULTA_LEGENDAS' : ['DATA_GERACAO','HORA_GERACAO','ANO_ELEICAO','NUM_TURNO','DESCRICAO_ELEICAO','SIGLA_UF','SIGLA_UE','NOME_UE','CODIGO_CARGO','DESCRICAO_CARGO','TIPO_LEGENDA','NUM_PARTIDO','SIGLA_PARTIDO','NOME_PARTIDO','SIGLA_COLIGACAO','NOME_COLIGACAO','COMPOSICAO_COLIGACAO','SEQUENCIAL_COLIGACAO'],
'DESPESA_ANUAL' : ['DT_GERACAO','HH_GERACAO','CD_TP_ESFERA_PARTIDARIA','DS_TP_ESPERA_PARTIDARIA','SG_UF','CD_MUNICIPIO','NM_MUNICIPIO','NR_ZONA','NR_CNPJ_PRESTADOR_CONTA','SG_PARTIDO','NM_PARTIDO','CD_TP_DOCUMENTO','DS_TP_DOCUMENTO','NR_DOCUMENTO','AA_AIDF','NR_AIDF','CD_TP_FORNECEDOR','DS_TP_FORNECEDOR','NR_CPF_CNPJ_FORNECEDOR','NM_FORNECEDOR','DS_GASTO','DT_PAGAMENTO','VR_GASTO','VR_PAGAMENTO','VR_DOCUMENTO'],
'DESPESAS_PARTIDOS' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','SEQUENCIAL_DIRETORIO','UF','NR_UE','MUNICIPIO','TIPO_DIRETORIO','SG_PARTIDO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NM_FORNECEDOR','NM_FORNECEDOR_RF','COD_SETOR_ECO_FORNECEDOR','SETOR_ECO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_CANDIDATOS' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','SEQUENCIAL_CANDIDATO','UF','NR_UE','MUNICIPIO','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NOME_FORNECEDOR','NOME_FORNECEDOR_RF','COD_SETOR_ECONOMICO_FORNECEDOR', 'SETOR_ECONOMICO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_CANDIDATOS_PRESTACAO_CONTAS_FINAL' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_CANDIDATO','UF','NR_UE','NM_UE','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','CPF_VICE_SUPLENTE','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NOME_FORNECEDOR','NOME_FORNECEDOR_RF','COD_SETOR_ECONOMICO_FORNECEDOR', 'SETOR_ECONOMICO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_CANDIDATOS_RELATORIO_FINANCEIRO' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_CANDIDATO','UF','NR_UE','NM_UE','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','CPF_VICE_SUPLENTE','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NOME_FORNECEDOR','NOME_FORNECEDOR_RF','COD_SETOR_ECONOMICO_FORNECEDOR', 'SETOR_ECONOMICO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_COMITES' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_COMITE','UF','TIPO_COMITE','SG_PARTIDO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NM_FORNECEDOR','NM_FORNECEDOR_RF','COD_SETOR_ECO_FORNECEDOR','SETOR_ECO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_PARTIDOS_PRESTACAO_CONTAS_FINAL' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_PRESTADOR_CONTA','UF','NR_UE','NM_UE','TIPO_DIRETORIO','SG_PARTIDO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NOME_FORNECEDOR','NOME_FORNECEDOR_RF','COD_SETOR_ECONOMICO_FORNECEDOR', 'SETOR_ECONOMICO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'DESPESAS_PARTIDOS_RELATORIO_FINANCEIRO' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_PRESTADOR_CONTA','UF','NR_UE','NM_UE','TIPO_DIRETORIO','SG_PARTIDO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_FORNECEDOR','NOME_FORNECEDOR','NOME_FORNECEDOR_RF','COD_SETOR_ECONOMICO_FORNECEDOR', 'SETOR_ECONOMICO_FORNECEDOR','DATA_DESPESA','VALOR_DESPESA','TIPO_DESPESA','DESC_DESPESA'],
'MOTIVO_CASSACAO' : ['DT_GERACAO','HH_GERACAO','ANO_ELEICAO','CD_TIPO_ELEICAO','NM_TIPO_ELEICAO','CD_ELEICAO','DS_ELEICAO','SG_UF','SG_UE','NM_UE','SQ_CANDIDATO','DS_MOTIVO_CASSACAO'],
'RECEITAS_CANDIDATOS' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','SEQUENCIAL_CANDIDATO','UF','NR_UE','MUNICIPIO','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NOME_DOADOR','NOME_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECONOMICO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA'],
'RECEITA_ANUAL' : ['DT_GERACAO','HH_GERACAO','CD_TP_ESFERA_PARTIDARIA','DS_TP_ESPERA_PARTIDARIA','SG_UF','CD_MUNICIPIO','NM_MUNICIPIO','NR_ZONA','NR_CNPJ_PRESTADOR_CONTA','SG_PARTIDO','NM_PARTIDO','CD_TP_ORIGEM_DOACAO','DS_TP_ORIGEM_DOACAO','NR_CPF_CNPJ_DOADOR','NM_DOADOR','CD_TP_ESFERA_PARTIDARIA_DOADOR','DS_TP_ESFERA_PARTIDARIA_DOADOR','SG_UF_DOADOR','CD_MUNICIPIO_DOADOR','NM_MUNICIPIO_DOADOR','NR_ZONA_DOADOR','SQ_CANDIDATO_DOADOR','NR_CANDIDATO_DOADOR','CD_CANDIDATO_CARGO_DOADOR','DS_CANDIDATO_CARGO_DOADOR','CD_TP_FONTE_RECURSO','DS_TP_FONTE_RECURSO','CD_TP_NATUREZA_RECURSO','DS_TP_NATUREZA_RECURSO','CD_TP_ESPECIE_RECURSO','DS_TP_ESPECIE_RECURSO','NR_RECIBO_DOACAO','NR_DOCUMENTO','DT_RECEITA','DS_RECEITA','VR_RECEITA'],
'RECEITAS_CANDIDATOS_PRESTACAO_CONTAS_FINAL' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_CANDIDATO','UF','NR_UE','NM_UE','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','CPF_VICE_SUPLENTE','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA','CPF_CNPJ_DOADOR_ORIGINÁRIO','NM_DOADOR_ORIGINÁRIO','TIPO_DOADOR_ORIGINARIO','SETOR_ECO_DOADOR_ORIGINARIO','NM_DOADOR_ORIGINARIO_RF'],
'RECEITAS_CANDIDATOS_RELATORIO_FINANCEIRO' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_CANDIDATO','UF','NR_UE','NM_UE','SG_PARTIDO','NR_CANDIDATO','CARGO','NM_CANDIDATO','CPF_CANDIDATO','CPF_VICE_SUPLENTE','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA','CPF_CNPJ_DOADOR_ORIGINÁRIO','NM_DOADOR_ORIGINÁRIO','TIPO_DOADOR_ORIGINARIO','SETOR_ECO_DOADOR_ORIGINARIO','NM_DOADOR_ORIGINARIO_RF'],
'RECEITAS_PARTIDOS' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_PRESTADOR_CONTA','UF','NR_UE','NM_UE','TIPO_DIRETORIO','SG_PARTIDO','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA','CPF_CNPJ_DOADOR_ORIGINÁRIO','NM_DOADOR_ORIGINÁRIO','TIPO_DOADOR_ORIGINARIO','SETOR_ECO_DOADOR_ORIGINARIO','NM_DOADOR_ORIGINARIO_RF'],
'RECEITAS_COMITES' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','SEQUENCIAL_COMITE','UF','NR_UE','MUNICIPIO','TIPO_COMITE','SG_PARTIDO','TIPO_DOCUMENTO','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SETOR_ECONOMICO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA'],
'RECEITAS_PARTIDOS_PRESTACAO_CONTAS_FINAL' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_PRESTADOR_CONTA','UF','NR_UE','NM_UE','TIPO_DIRETORIO','SG_PARTIDO','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA','CPF_CNPJ_DOADOR_ORIGINÁRIO','NM_DOADOR_ORIGINÁRIO','TIPO_DOADOR_ORIGINARIO','SETOR_ECO_DOADOR_ORIGINARIO','NM_DOADOR_ORIGINARIO_RF'],
'RECEITAS_PARTIDOS_RELATORIO_FINANCEIRO' : ['COD_ELEICAO','DESC_ELEICAO','DATA_HORA','CNPJ_PRESTADOR_CONTA','SEQUENCIAL_PRESTADOR_CONTA','UF','NR_UE','NM_UE','TIPO_DIRETORIO','SG_PARTIDO','NR_RECIBO_ELEITORAL','NR_DOCUMENTO','CPF_CNPJ_DOADOR','NM_DOADOR','NM_DOADOR_RF','SG_UE_DOADOR','NR_PARTIDO_DOADOR','NR_CANDIDATO_DOADOR','COD_SETOR_ECONOMICO_DOADOR','SETOR_ECO_DOADOR','DATA_RECEITA','VALOR_RECEITA','TIPO_RECEITA','FONTE_RECURSO','ESPECIE_RECURSO','DESC_DA_RECEITA','CPF_CNPJ_DOADOR_ORIGINÁRIO','NM_DOADOR_ORIGINÁRIO','TIPO_DOADOR_ORIGINARIO','SETOR_ECO_DOADOR_ORIGINARIO','NM_DOADOR_ORIGINARIO_RF']
}
# 'CNPJ':['ANO', 'NR_CNPJ','NM_PARTIDO'],
def parse_csv(self, path_to_csv):
if path_to_csv[-4:] == '.csv':
name_csv = path_to_csv.split('/')[-1]
for k,v in self.dicionario_colunas_txts.items():
split_name_csv = path_to_csv.lower().split(k.lower()+'_')
if len(split_name_csv) > 1:
df = pd.read_csv(path_to_csv,sep=';',encoding='latin-1',error_bad_lines=False, header=None, names=v)
df.to_sql(k,self.engine,schema='dados_eleitorais',if_exists='append',chunksize=500,index=False)
def main(main_path):
upload = upload_dados_tse()
recursive_f = recursive_folders()
paths = recursive_f.find_files(main_path)
for p in paths:
print(p)
upload.parse_csv(p)
if __name__ == '__main__':
main('/home/danilo/Downloads/dados_eleitorais/candidatos/')