PgJDBC no admite COPY
directamente, pero lo hace a través del CopyManager
API que puede obtener de PGConnection
interfaz de java.sql.Connection
devuelto por PgJDBC.
Desafortunadamente, no puede usar eso desde un archivo SQL simple donde mezcla COPY
operaciones con otros comandos.
Personalmente, pagaría a psql
para ejecutar .sql
archivos usando Ant <exec>
tarea. De esa forma puedes incluir COPY
datos en línea en sus archivos SQL.
Sería bueno habilitar PgJDBC para manejar COPY
, pero no es fácil. Es efectivamente un modo de protocolo diferente en PostgreSQL, y no tiene mucho sentido usar las interfaces JDBC habituales con declaraciones preparadas, ejecución, etc. Podríamos proporcionar un execSQLScript
en la PGconnection
personalizada pero eso no te ayudaría mucho porque cosas como <sql>
de Ant tarea no lo usaría. Tendrías que escribir una tarea personalizada.
En cambio, PgJDBC tendría que mentirles a los clientes cuando ingresaba COPY
modo después de COPY
comando, tendría que ignorar la especificación JDBC y no hacer realmente lo que se suponía que debía hacer en respuesta a las ejecuciones de la declaración JDBC. Es probable que esto rompa todo tipo de cosas.
Entonces, por ahora, la opción más fácil es simplemente ejecutar psql
comando para hacer lo que quieras.