Importacao de Registros utilizando os recursos do Maker



  • Boa noite. Estou utilizando as funcionadades de importacao de arquivos para a base de dados. Fiz o mapeamento correto.

    O conteudo do arquivo importado (.txt) é o seguinte:

    0001teste5511

    e o mapeamento que o sistema determina é o seguinte:
    posicao
    inicial final mascara tipo
    codigo_pais 1 4 int4
    nm_pais 5 9 varchar
    cd_internacional 10 11 varchar
    codigo_empresa 12 12 int4
    cd_integracao 13 13 varchar

    Coloquei com e sem mascara, porem ocorre o erro abaixo. Gostaria de saber o que devo fazer para importa corretamente o arquivo.
    Obrigado.

    Erro: ERROR: column "codigo_pais" is of type integer but expression is of type character varying
    Dica: You will need to rewrite or cast the expression.
    Posição: 32 Linha: 0SQL: INSERT INTO SNT_CADASTRO_PAIS (codigo_pais,nm_pais,cd_internacional,codigo_empresa,cd_integracao) values(?,?,?,?,?)


  • Brother, apesar de não ter tanta experiencia com Maker, pude ver que provavelmente seu erro está relacionado ao Tipo de Dado que você está tentando dar INSERT no seu Banco de Dados.

    Veja: "[i]O SQL define dois tipos primários para caracteres: character varying(n) e character(n), onde n é um número inteiro positivo. Estes dois tipos podem armazenar cadeias de caracteres com comprimento de até n caracteres. A tentativa de armazenar uma cadeia de caracteres mais longa em uma coluna de um destes tipos resulta em erro, a não ser que os caracteres excedentes sejam todos espaços; neste caso a cadeia de caracteres será truncada em seu comprimento máximo (Esta exceção um tanto bizarra é requerida pelo padrão SQL). Se a cadeia de caracteres a ser armazenada for mais curta que o comprimento declarado, os valores do tipo character são completados com espaços; os valores do tipo character varying simplesmente armazenam uma cadeia de caracteres mais curta.[/i]"


  • Olá Gleyson.

    Mas estou utilizando as proprias funções do Maker (pasta localizar) - botão IMPORTACAO. No caso da mascara, eu teria que colocar alguma coisa ?

    Obrigado.


  • OK, mas não estou me referindo a erros de funções MAKER, ao que aprece a coluna que armazena o [b]codigo_pais[/b] no seu Banco de Dados está como Integer e parece que o maker esta enviando o conteudo do campo como character varying, experimente ou fazer um cast para ambas ficarem com o mesmo tipo, ou alterar a coluna no Banco, teste ambas e veja se uma destas opções pode resolver seu problema inicialmente.


  • Handrei,

    Olhando o conteúdo do seu arquivo posso lhe dizer que 0001 seu banco de dados não entenderá como inteiro (nativamente).

    Aconselho que quando você ler esse arquivo no Maker trate esse valor antes de inserir na tabela, pois se o campo que irá armazenar ele é inteiro como vi na mensagem de erro não irá funcionar mesmo.

    Abs


  • No momento que estiver inserindo, utilize a função "Para inteiro" no campo. Ele irá fazer o cast para o tipo que o seu campo espera.

Log in to reply