1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

ERROR: column "X" is of type bytea but expression is of type oid

Eu fiz um programa para me ajudar a exportar as informações de um banco de dados Oracle para PostgreSQL. Eu extraio o metadata de todas as tabelas e armazeno nos meus objetos, que ficam em uma lista. Quando é binário o tipo de coluna é retornado como Blob (estou ciente do Clob) e eu converto para Bytea.

Depois disso faço um create table usando as informações da metadata extraída.

Tendo criado as tabelas e suas colunas eu percorro a minha lista de tabelas. Para cada tabela eu executo uma query assim:

"SELECT * FROM " + nomeTabela.

Quando o campo é Blob eu armazeno em um InputStream assim:

campo.setBlob(rs.getBinaryStream(campo.getColuna().getNomeColuna()));

Depois de dar um set em todos os campos da tabela eu passo para o PostgreSQL. Eu trato os Blobs assim:

if (campo.getBlob() != null) {
                try {
                    ps.setBinaryStream(posicao, campo.getBlob());
                } finally {
                    try {
                        campo.getBlob().close();
                    } catch (IOException e) {
                    }
                }
            } else {
                ps.setNull(posicao, Types.BLOB);
            }

O meu problema é quando eu uso o ps.executeUpdate(); ele me retorna o seguinte erro:

ERROR: column "capacitacaoanexo" is of type bytea but expression is of type oid
  Dica: You will need to rewrite or cast the expression.

O código acima funciona perfeitamente no Firebird sem nenhum problema mas no PostgreSQL fica me retornando esse erro. Existe algo que eu possa fazer para resolver isso no meu código ou na minha query?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

0 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java banco-de-dados sql ou faça a sua própria pergunta.