Adonias Malosso wrote:
> Srs,
> 
> Tenho tentado fazer um copy de um arquivo CSV com 4.902.209 KB e
> 7.109.032 linhas para uma tabela com umas 100 colunas ( numero de
> colunas é o mesmo do arqvuivo ) e recebo a segunite mensagem de erro:
> 
> psql:/home/adonias/import/script_q2.sql:109: ERROR:  invalid string
> enlargement request size 65536
>
O PostgreSQL *não* conseguiu alocar 65 Kb? Por curiosidade, podes
mostrar os parâmetros de memória do PostgreSQL?

> O comando copy utilizado foi:
> 
> COPY importacao.temp_q2 FROM :ARQUIVO DELIMITER ';' NULL '' CSV QUOTE '"';
> 
> O servidor tem 8Gb de RAM e o Postgres é o 8.2.4.
> 
Um teste em uma máquina razoável (Pentium M, 1 GB de RAM, 8.2.4) e com
14 campos obtive os seguintes resultados:

regression=# copy tst from '/tmp/y.csv' delimiter ',';
COPY 924220
Tempo: 37794,338 ms
regression=# select count(*) from tst;
 count
--------
 924220
(1 registro)

Tempo: 6850,461 ms

> O comando funciona para menos linhas. No entanto, dependendo da memória
> disponivel no servidor o numero de linhas que consigo importar sem erros
> de memória varia. Tenho observado o postgres consumindo memória numa
> quantidade proporcional ao arquivo. O copy de csv nao deveria ser
> executado linha a linha? Sem necessidade de tanta memória?
> 
O COPY *não* utiliza a mesma quantidade de memória do tamanho do
arquivo. No meu teste acima com um arquivo de 101 MB, ele utilizou
somente 29 MB de RAM. Mesmo com arquivos menores ele utilizou quase a
mesma quantidade de memória.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a