Mudando um pouco de assunto... como funciona o comando copy (para fazer inserções em massa...)?
Fiz esta função em PL/PerlU:
CREATE OR REPLACE FUNCTION public."load" (text) RETURNS char(6) AS
$body$
my $path = $_[0] . '/*.txt';
foreach my $file (glob($path)) {
$file =~ /\/?.+\/(.+).txt/;
my $cmd = "COPY $1 FROM \'$file\'";
spi_exec_query($cmd);
}
return 'Loaded';
$body$
LANGUAGE plperlu;
ela recebe o caminho do diretório onde estão os arquivos .txt e executa copy na tabela correspondente. Você precisa apenas que os nomes dos arquivos deste diretório sejão os mesmos das suas respectivas tabelas. Ex:
- caminho para o seu diretório: /var/genome/bioinformatica/bdtest
- o bdtest tem as tabelas: foo e bar
- os arquivos dentro do diretório são: foo.txt e bar.txt
- conecte com o bdtest e: select load('/var/genome/bioinformatica/bdtest');
p.s.: lembre-se de criar a linguagem PL/PerlU, com a PL/Perl não rola pq a função faz acesso ao sistema de arquivos do servidor.
--
wallace reis
Núcleo de Biologia Computacional e
Gestão de Informações Biotecnológicas/LABBI
_______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/
Para editar suas opções ou sair da lista acesse a página da lista em: http://pgfoundry.org/mailman/listinfo/brasil-usuarios
