On 10/31/06, Sebastian Selau Webber Colombo <[EMAIL PROTECTED]> wrote:
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

Responder a