PgJDBC non supporta COPY
direttamente, ma lo fa tramite il CopyManager
API che puoi ottenere da PGConnection
interfaccia di java.sql.Connection
restituito da PgJDBC.
Sfortunatamente, non puoi usarlo da un semplice file SQL in cui mescoli COPY
operazioni con altri comandi.
Personalmente, sborserei a psql
per eseguire .sql
utilizzando Ant <exec>
compito. In questo modo puoi includere COPY
dati in linea nei tuoi file SQL.
Sarebbe bello abilitare PgJDBC per gestire COPY
, ma non è facile. È effettivamente una modalità di protocollo diversa in PostgreSQL e non ha molto senso utilizzare le solite interfacce JDBC con istruzioni preparate, eseguire, ecc. Potremmo fornire un execSQLScript
sulla PGconnection
personalizzata ma questo non ti aiuterebbe molto perché cose come <sql>
di Ant compito non lo userebbe. Dovresti scrivere un'attività personalizzata.
Invece, PgJDBC dovrebbe praticamente mentire ai client - quando ha inserito COPY
modalità dopo un COPY
comando, dovrebbe ignorare le specifiche JDBC e non fare davvero ciò che avrebbe dovuto in risposta all'esecuzione dell'istruzione JDBC. È probabile che questo rompa ogni sorta di cose.
Quindi, per ora, l'opzione di gran lunga più semplice è eseguire semplicemente psql
comando per fare quello che vuoi.