estou passando o campo strcep como string, mesmo assim o erro ocorre
se eu fizer o backup e restore do banco o erro para de ocorrer
gostaria de saber se existe alguma solução sem que tenha que 
fazer o backup e restore do banco, exitem tabelas com mais de 
500mil registros já é demorado para importar usando o copy from com
Arquivos limitados a 50mil registros, fazer o backup e restore após a
Importação, faz com que o processo todo seja mais demorado.


[]´s
Valdomiro


-----Mensagem original-----
De: [email protected]
[mailto:[email protected]] Em nome de Osvaldo
Kussama
Enviada em: terça-feira, 25 de agosto de 2009 19:53
Para: Comunidade PostgreSQL Brasileira
Assunto: Re: [pgbr-geral] RES: Problemas com Importação de Dados

2009/8/25 Valdomiro <[email protected]>:
> Importo essas tabelas
>
>
>
> CREATE TABLE cep
>
> (
>
>   intcodigoestado int4 NOT NULL,
>
>   intcodigocidade int4 NOT NULL,
>
>   intcodigorua int4 NOT NULL,
>
>   intcodigobairro int4 NOT NULL,
>
>   strcep varchar(20) NOT NULL,
>
>   intcep5digitos int4 NOT NULL,
>
>   intcodigobairro2 int4 NOT NULL,
>
>   intcodigopais int4,
>
>   intcodigoempresa int4,
>
>   CONSTRAINT pk_cep PRIMARY KEY (intcodigoestado, intcodigocidade,
> intcodigorua, intcodigobairro, strcep, intcep5digitos, intcodigobairro2),
>
>   CONSTRAINT fk_cep_ref_200_rua FOREIGN KEY (intcodigorua)
>
>       REFERENCES rua (intcodigorua) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_cep_ref_203_bairro FOREIGN KEY (intcodigobairro)
>
>       REFERENCES bairro (intcodigobairro) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_cep_ref_56510_cidade FOREIGN KEY (intcodigocidade)
>
>       REFERENCES cidade (intcodigocidade) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_cep_ref_56529_estado FOREIGN KEY (intcodigoestado)
>
>       REFERENCES estado (intcodigoestado) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_cep_reference_pais FOREIGN KEY (intcodigopais)
>
>       REFERENCES pais (intcodigopais) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT
>
> )
>
> WITHOUT OIDS;
>
>
>
> E
>
>
>
>
>
>
>
> CREATE TABLE endereco_cliente
>
> (
>
>   intcodigocliente int4 NOT NULL,
>
>   intseqenderecocliente int4 NOT NULL,
>
>   intcodigoempresa int4,
>
>   intcodigotipoendereco int4,
>
>   intcodigoestado int4,
>
>   intcodigocidade int4,
>
>   intcodigorua int4,
>
>   intcodigobairro int4,
>
>   strcep varchar(20),
>
>   intcep5digitos int4,
>
>   intcodigobairro2 int4,
>
>   strtnumeroenderecocliente varchar(10),
>
>   strcomplementoenderecocliente varchar(80),
>
>   strcaixapostalenderecocliente varchar(6),
>
>   CONSTRAINT pk_endereco_cliente PRIMARY KEY (intcodigocliente,
> intseqenderecocliente),
>
>   CONSTRAINT fk_endereco_ref_27206_cliente FOREIGN KEY (intcodigocliente)
>
>       REFERENCES cliente (intcodigocliente) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_endereco_ref_27210_tipo_end FOREIGN KEY
> (intcodigotipoendereco)
>
>       REFERENCES tipo_endereco (intcodigotipoendereco) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_endereco_ref_64010_cep FOREIGN KEY (intcodigoestado,
> intcodigocidade, intcodigorua, intcodigobairro, strcep, intcep5digitos,
> intcodigobairro2)
>
>       REFERENCES cep (intcodigoestado, intcodigocidade, intcodigorua,
> intcodigobairro, strcep, intcep5digitos, intcodigobairro2) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT,
>
>   CONSTRAINT fk_endereco_refempfor_empresa2 FOREIGN KEY (intcodigoempresa)
>
>       REFERENCES empresa (intcodigoempresa) MATCH SIMPLE
>
>       ON UPDATE RESTRICT ON DELETE RESTRICT
>
> )
>
> WITHOUT OIDS;
>
>
>
>
>
> Depois de importado se eu for na tabela CEP e cadastrar novo CEP, e for em
> endereco_cliente e alterar um endereço já existente da o seguinte erro de
> SQL
>
>
>
>
>
> Insert or update on table “endereço_cliente” violates foreing key
constraint
> “fk_endereco_ref_64010_cep” key
>
> (intcodigoestado, intcodigocidade, intcodigorua, intcodigobairro, strcep,
> intcep5digitos, intcodigobairro2) = (1,4,6,4,15108-000,15090,0)

Se este for o comando exato que você está usando então existe um
problema no valor do campo strcep.
Quando você coloca 15018-000 o resultado da operação (subtração) será
o valor 15018 que, convertido para varchar, será incluido ou alterado
em sua tabela.

Use '15018-000' que é a forma correta para um campo texto.


>
>
>
>
>
> Se dropar essa base e importar novamente, executar um bkp e um restore o
> erro não ocorre
>
> Não sei se é porque estou usando o comando COPY “nome_tabela” FROM
> 'arquivo_de_dados.txt';
>
> Não sei se ele desliga alguma coisa, já tentei da reindex database e
> vaccumdb mas não adiantou
>


Osvaldo
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4367 (20090825) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
 
 

__________ Information from ESET NOD32 Antivirus, version of virus signature
database 4367 (20090825) __________

The message was checked by ESET NOD32 Antivirus.

http://www.eset.com
 

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a