É 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 ?
É 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 ?
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!