Estou tentando carregar um CSV com cerca de 100 milhões de registros (cerca de 8 GB no disco) no Postgres por meio do comando copy : copy mytable from 'path/to/myfile.csv' with CSV;
Tenho monitorado o progresso verificando o tamanho da tabela reportada no pgAdmin e comparando com o tamanho CSV. Eu sei que vai ser uma comparação fraca na melhor das hipóteses, e eu adoraria ouvir se há uma maneira melhor de monitorar o progresso.
Aqui está o problema: essa carga vem acontecendo há bastante tempo (acho que é muito longa) e, enquanto continuo verificando o tamanho da tabela, o carregamento parece estar desacelerando. Ou seja, demora muito mais para carregar novos 100 MB de dados do que anteriormente na carga. Por quê?
Existe algum ajuste, configuração ou abordagem alternativa que eu possa tomar para uma carga mais rápida que não seja dividir meu CSV em muitos arquivos menores?
Atualização: específicos de esquema / dados
Uma linha de dados representativa:
1234567890,FOOBARF,2010-01-15 03:07:05,0.924700,0.925000
Definição completa do esquema:
CREATE TABLE mytable
(
id integer NOT NULL,
rname character varying(7) NOT NULL,
ts timestamp without time zone NOT NULL,
stat1 numeric NOT NULL,
stat2 numeric NOT NULL,
CONSTRAINT pk_id PRIMARY KEY (id)
)
WITH (
OIDS=FALSE
);
ALTER TABLE mytable OWNER TO postgres;