Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Procedure para leitura de arquivo

É possível criar uma procedure que leia um arquivo txt e importe no banco de dados ?

Eu preciso filtrar as linhas que vou importar, o melhor cenário é usar o copy numa tabela temporária e depois fazer um select into ?

1 resposta
solução!

Olá, Natanael! Tudo bem contigo?

Sim, é possível criar uma procedure no PostgreSQL para realizar isso que você mencionou.

Uma maneira de fazer isso é utilizando o comando COPY para carregar o conteúdo do arquivo em uma tabela temporária e, em seguida, realizar um SELECT INTO para filtrar as linhas que você deseja importar para a tabela final.

Aqui está um exemplo de como você pode fazer isso:

CREATE OR REPLACE PROCEDURE importar_arquivo()
AS $$
BEGIN
  -- Cria uma tabela temporária para armazenar o conteúdo do arquivo
  CREATE TEMPORARY TABLE temp_import (
    coluna1 TEXT,
    coluna2 TEXT,
    -- adicione mais colunas conforme necessário
  );

  -- Carrega o conteúdo do arquivo na tabela temporária
  COPY temp_import FROM '/caminho/do/arquivo.txt' DELIMITER ',' CSV HEADER;

  -- Insira as linhas filtradas na tabela final
  INSERT INTO tabela_final (coluna1, coluna2)
  SELECT coluna1, coluna2
  FROM temp_import
  WHERE -- adicione as condições de filtro aqui;

  -- Limpa a tabela temporária
  DROP TABLE temp_import;
END;
$$ LANGUAGE plpgsql;

Depois de criar a procedure, você pode executá-la usando o comando CALL:

CALL importar_arquivo();

Lembre-se de substituir /caminho/do/arquivo.txt pelo caminho correto do seu arquivo e tabela_final pelo nome da tabela em que você deseja importar os dados.

Era isso, espero ter ajudado, caso precise eu estarei por aqui.

Abraços e bons estudos!