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.