<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Geração de arquivo CSV de pessoas e empresas - MWM International]]></title><description><![CDATA[<p dir="auto">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.</p>
<p dir="auto">A funcionalidade foi criada a partir de solicitação de um cliente (MWM International).</p>
<p dir="auto">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.</p>
<p dir="auto"><strong>Pré-requisitos</strong></p>
<p dir="auto">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.<br />
No banco DESENV01 este directory aponta para "/tmp" e o usuário dsv_gtsoft tem as permissões necessárias para execução.<br />
O usuário também precisa ter grant de execute para a package UTL_FILE.</p>
<p dir="auto">Observação: para dar os grants é necessário estar logado como sysdba.</p>
<p dir="auto">Exemplo de criação da estrutura necessária:</p>
<pre><code>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;
</code></pre>
<p dir="auto"><strong>Estrutura do Arquivo</strong></p>
<p dir="auto">O arquivo que é gerado tem o nome composto da seguinte forma:<br />
<em>HORA_TERCEIROS_ + YYYYMMDD da data atual + .CSV</em></p>
<p dir="auto">Exemplo: HORA_TERCEIROS_20220429.CSV</p>
<p dir="auto">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.</p>
<p dir="auto">Cada registro do arquivo contém as seguintes informações:</p>
<ul>
<li>CODIGO_PESSOA</li>
<li>CPF</li>
<li>NOME</li>
<li>FUNCAO</li>
<li>CODIGO_TIPO_PESSOA</li>
<li>DESCRICAO_TIPO_PESSOA</li>
<li>DATA_ADMISSAO</li>
<li>DATA_DESLIGAMENTO</li>
<li>CODIGO_EMPRESA</li>
<li>CNPJ_EMPRESA</li>
<li>CPF_EMPRESA</li>
<li>NOME_EMPRESA</li>
<li>CODIGO_CONTRATANTE</li>
<li>NOME_CONTRATANTE</li>
<li>SITUACAO</li>
</ul>
<p dir="auto">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.</p>
<p dir="auto">Existe uma regra específica para a coluna situação, conforme segue:</p>
<ul>
<li>Situação <strong>ATIVO</strong>: Quando data de desligamento não informada ou data de desligamento maior que a data atual mais 15 dias</li>
<li>Situação <strong>EXPIRANDO</strong>: Quando data de desligamento for entre a data atual mais um dia e a data atual mais 15 dias</li>
<li>Situação <strong>DESLIGADO</strong>: Quando data de desligamento menor ou igual a data atual</li>
</ul>
<p dir="auto"><strong>Exemplo de chamada para execução</strong></p>
<pre><code>exec PROC_GERA_ARQUIV_TERCEIROS_MWM(';');
</code></pre>
<p dir="auto">Observação: no cliente ela será executa a partir de um JOB de banco diariamente</p>
<p dir="auto"><strong>Exemplo de script para leitura do arquivo gerado</strong></p>
<p dir="auto">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.<br />
Segue exemplo de script para leitura:</p>
<pre><code>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;
</code></pre>
]]></description><link>http://insoft-docker1:4567/topic/157/geração-de-arquivo-csv-de-pessoas-e-empresas-mwm-international</link><generator>RSS for Node</generator><lastBuildDate>Fri, 23 Oct 2026 05:37:10 GMT</lastBuildDate><atom:link href="http://insoft-docker1:4567/topic/157.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 29 Apr 2022 17:42:02 GMT</pubDate><ttl>60</ttl></channel></rss>