PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

JDBC COPY com formiga


PgJDBC não suporta COPY diretamente, mas o faz através do CopyManager API que você pode obter em PGConnection interface do java.sql.Connection retornado por PgJDBC.

Infelizmente, você não pode usar isso de um arquivo SQL simples onde você mistura COPY operações com outros comandos.

Pessoalmente, eu pagaria para psql para executar .sql arquivos usando o Ant <exec> tarefa. Dessa forma, você pode incluir COPY dados em linha em seus arquivos SQL.

Seria bom habilitar o PgJDBC para lidar com COPY , mas não é fácil. É efetivamente um modo de protocolo diferente no PostgreSQL, e não faz muito sentido usar as interfaces JDBC usuais com instruções preparadas, execute, etc. para ele. Poderíamos fornecer um execSQLScript no PGconnection personalizado mas isso não ajudaria muito porque coisas como o <sql> do Ant tarefa não iria usá-lo. Você teria que escrever uma tarefa personalizada.

Em vez disso, o PgJDBC teria que mentir para os clientes - quando digitava COPY modo após um COPY comando, ele teria que ignorar a especificação JDBC e realmente não fazer o que deveria em resposta à execução da instrução JDBC. Isso provavelmente quebraria todos os tipos de coisas.

Então - por enquanto, a opção mais fácil é apenas executar o psql comando para fazer o que você quer.