PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

JDBC COPIA con ant

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.