Geração de arquivo CSV de pessoas e empresas - MWM International
-
A partir da versão 2.0.9.1 está sendo disponibilizada uma nova funcionalidade para geração de um arquivo CSV com a lista de pessoas por empresa e contratante a partir do banco de dados utilizando a UTL_FILE do Oracle.
A funcionalidade foi criada a partir de solicitação de um cliente (MWM International).
O arquivo é gerado através a procedure de banco PROC_GERA_ARQUIV_TERCEIROS_MWM que tem apenas um parâmetro de entrada varchar2 onde deve ser informado o caracter que será usado como separador de colunas no arquivo CSV.
Pré-requisitos
Deve existir um DIRECTORY chamado HORACIUS criado no banco de dados e o usuário deve ter permissões de leitura e escrita nesse diretório, assim como permissões de leitura e escrita na pasta do Sistema Operacional vinculada a este directory.
No banco DESENV01 este directory aponta para "/tmp" e o usuário dsv_gtsoft tem as permissões necessárias para execução.
O usuário também precisa ter grant de execute para a package UTL_FILE.Observação: para dar os grants é necessário estar logado como sysdba.
Exemplo de criação da estrutura necessária:
CONNECT SYS/password AS SYSDBA GRANT EXECUTE ON UTL_FILE TO user; CREATE OR REPLACE DIRECTORY HORACIUS AS '/tmp'; GRANT READ, WRITE ON DIRECTORY HORACIUS TO user;Estrutura do Arquivo
O arquivo que é gerado tem o nome composto da seguinte forma:
HORA_TERCEIROS_ + YYYYMMDD da data atual + .CSVExemplo: HORA_TERCEIROS_20220429.CSV
Ao executar o procedimento caso já exista um arquivo na pasta com o mesmo nome o mesmo será removido antes de gerar o novo arquivo.
Cada registro do arquivo contém as seguintes informações:
- CODIGO_PESSOA
- CPF
- NOME
- FUNCAO
- CODIGO_TIPO_PESSOA
- DESCRICAO_TIPO_PESSOA
- DATA_ADMISSAO
- DATA_DESLIGAMENTO
- CODIGO_EMPRESA
- CNPJ_EMPRESA
- CPF_EMPRESA
- NOME_EMPRESA
- CODIGO_CONTRATANTE
- NOME_CONTRATANTE
- SITUACAO
Sempre serão incluídos no arquivos todas as pessoas de todas as empresas que tenham turnos ativos em alguma contratante, não existe filtro e nem ordenação na consulta base.
Existe uma regra específica para a coluna situação, conforme segue:
- Situação ATIVO: Quando data de desligamento não informada ou data de desligamento maior que a data atual mais 15 dias
- Situação EXPIRANDO: Quando data de desligamento for entre a data atual mais um dia e a data atual mais 15 dias
- Situação DESLIGADO: Quando data de desligamento menor ou igual a data atual
Exemplo de chamada para execução
exec PROC_GERA_ARQUIV_TERCEIROS_MWM(';');Observação: no cliente ela será executa a partir de um JOB de banco diariamente
Exemplo de script para leitura do arquivo gerado
Caso não tenha acesso a pasta onde o arquivo foi gerado no servidor do banco de dados para conferência, a mesma pode ser realizada lendo o conteúdo do arquivo via script pl/sql.
Segue exemplo de script para leitura:DECLARE -- string1 VARCHAR2(32767); file1 UTL_FILE.FILE_TYPE; -- BEGIN -- file1 := UTL_FILE.FOPEN('HORACIUS','HORA_TERCEIROS_20220427.CSV','R'); -- ajustar o nome do arquivo loop begin UTL_FILE.GET_LINE(file1, string1, 32767); DBMS_OUTPUT.PUT_LINE(string1); exception when no_data_found then exit; end; end loop; -- UTL_FILE.FCLOSE_ALL; -- END;