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
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral