Sebastian, tem mais um detalhe que preciso me deter – E se o arquivo não 
existir no servidor? 

 

Quando digito uma data que não tem o arquivo correspondente no servidor aparece 
o seguinte erro:

 

ERRO:  não pôde abrir arquivo "/tmp/sage/arqs/bhtac_h_1983_02_05.dados" para 
leitura: Arquivo ou diretório não encontrado

CONTEXTO:  comando SQL "COPY bhtac_h_1983_02_05 FROM 
'/tmp/sage/arqs/bhtac_h_1983_02_05.dados' DELIMITER ','"

PL/pgSQL function "fs_existe_tabela_nessa_data" line 18 at execute statement

 

 

A função que fiz baseado na tua estar da seguinte forma. Fico no aguardo.

 

CREATE OR REPLACE FUNCTION fs_existe_tabela_nessa_data(tabela varchar) RETURNS 
void AS $$

 

DECLARE pTabela   ALIAS FOR $1;

sql_copy varchar;

sql_createtable varchar;

result integer;

 

BEGIN

 

            PERFORM true FROM pg_class WHERE relname ilike tabela;

            IF NOT FOUND THEN

 

                        sql_createtable = 'CREATE TABLE ' || tabela || ' 
(BH_DTHR TIMESTAMP WITH TIME ZONE, BH_CHAVE INT, BH_VARIACAO INT , 

                                                           FLAG INT, FLAGEST 
SMALLINT, LINFA REAL, LINFE REAL, LINFU REAL, LSUPA REAL,              

                                                           LSUPE REAL, LSUPU 
REAL, RESNORM REAL, RGALR SMALLINT, VALEST REAL, VALOR REAL);';                 
                                         

                        EXECUTE sql_createtable;

 

                        --TENHO QUE TESTAR SE ESSE ARQUIVO EXISTE NO SERVIDOR 
-- COMO FAZER ISSO NO POSTGRES?

                        

                        sql_copy = 'COPY ' || tabela || ' FROM 
''/tmp/sage/arqs/' || tabela || '.dados'' DELIMITER '',''';

                        EXECUTE sql_copy;

                        

                        RAISE EXCEPTION 'N�O Encontrei';

            ELSE

                        RAISE EXCEPTION 'Encontrei';

            END IF;

            RETURN;          

END;

$$ LANGUAGE 'plpgsql' VOLATILE;

 

SELECT fs_existe_tabela_nessa_data('bhpas_h_2001_09_10');

 

_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a